【问题标题】:golang convert "type []string" to stringgolang 将“type []string”转换为字符串
【发布时间】:2017-06-05 00:21:49
【问题描述】:

我确信这是一个简单的问题,但我一直碰到这个问题。我看其他人也一样。

我看到有些人创建了一个for 循环并遍历切片以创建一个字符串,有没有更简单的方法将[]string 转换为string

sprintf 会这样做吗?

【问题讨论】:

  • 请说明您遇到的实际问题:为什么您必须将[]string 转换为string?您将同意 I keep bumping into this 不是有效的描述。
  • 例如当您将格式化的 json 格式为 []string 时(因为某些 pkg 方法会这样返回它)并希望像这样 Unmarshal(data []byte, v interface{}) 它:json.Unmarshal([]byte(strings.Join(jsonLines, "")), &model)

标签: string go types string-concatenation


【解决方案1】:

你可以使用strings.Join(arr []string, separator string) string,就像我知道的几乎所有其他语言一样

https://golang.org/pkg/strings/#Join

【讨论】:

    【解决方案2】:

    这是一个简单的例子,你可以粘贴到主函数:

      stringArray := []string {"Hello","world","!"}
      justString := strings.Join(stringArray," ")
      fmt.Println(justString)
    

    并链接到操场上的working example

    或者使用非常简单的函数 simple function

    【讨论】:

    • SCNR:这也可以粘贴到与 main 不同的函数中吗?我的意思是这里有另一个例子很好。
    【解决方案3】:

    Sprint 会这样做吗?

    确实如此!

    如果您只关心它是一个字符串而不是具体的外观,这里还有另一种转换为字符串的方法(请参阅上面的答案strings.Join 以获得更多灵活性)。

    此方法(或诸如Sprintf 之类的变体)的优势在于,它可以与(几乎)所有其他数据一起使用,例如mapsstructs 以及任何实现fmt.Stringer 接口的自定义类型。

      stringArray := []string {"Hello","world","!"}
      justString := fmt.Sprint(stringArray)
    

    这是working example的链接。

    【讨论】:

      【解决方案4】:

      通过导入strings包,使用Join函数即可轻松完成。您需要传递字符串切片和分隔字符串中的元素所需的分隔符。 (例如:空格或逗号)

      func Join(elems []string, sep string) string
      

      示例代码:

      package main
      
      import (
          "fmt"
          "strings"
      )
      
      func main() {
          sliceStr := []string{"a","b","c","d"}
          str := strings.Join(sliceStr,", ")
          fmt.Println(str)
      }
      
      //output: a, b, c, d
      

      【讨论】:

        【解决方案5】:

        如果不关心分隔符,可以使用path

        package main
        import "path"
        
        func main() {
           a := []string{"south", "north"}
           s := path.Join(a...)
           println(s == "south/north")
        }
        

        https://golang.org/pkg/path#Join

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2017-02-09
          • 1970-01-01
          • 1970-01-01
          • 2014-02-27
          • 2020-11-22
          • 1970-01-01
          • 1970-01-01
          • 2018-11-14
          相关资源
          最近更新 更多