golang 将 "type []string" 转换为字符串

golang convert "type []string" to string

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

我看到有些人创建了一个 for 循环和 运行 通过切片来创建一个字符串,有没有更简单的方法将 []string 转换为 string?

sprintf会做吗?

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

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

这是一个简单的示例,您可以将其粘贴到主函数中:

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

和 link 去 working example 在操场上。

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

Will Sprint do it?

Yes indeed!

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

此方法(或 Sprintf 等变体)的优点是它可以(几乎)处理所有其他数据,例如 mapsstructs 以及任何自定义类型实现了 fmt.Stringer 接口。

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

这里是 link 到 working example

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

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

如果你不关心分隔符,你可以使用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

package main

import (
"fmt"
"reflect"
"strings"
)

func main() {
str1 := []string{"Trump", "In", "India", "On", "Feb 25"}
fmt.Println(str1)
fmt.Println(reflect.TypeOf(str1))

str2 := strings.Join(str1, " ")
fmt.Println(str2)
fmt.Println(reflect.TypeOf(str2))

str3 := strings.Join(str1, ", ")
fmt.Println(str3)
fmt.Println(reflect.TypeOf(str3))
}

以下是上述程序的输出:-

go run hello.go
[Trump In India On Feb 25]
[]string
Trump In India On Feb 25
string
Trump, In, India, On, Feb 25
string

在上面的代码中,我们首先定义了一个字符串切片,然后使用reflect包来判断切片的数据类型。 我们导入了“strings”模块。使用 strings.Join() 方法,我们将字符串切片的所有元素组合成一个字符串。因此,Golang string.Join() 函数将切片转换为字符串。我们已经通过 space(” “) 作为分隔符。所以我们将通过 space.

连接切片元素

strings.Join() 的第二个参数是分隔符。对于没有定界符,请使用空字符串文字。

在下一步中,我们再次使用 TypeOf() 函数来检查数据类型。

然后我们又用到了Golang的string.Join()函数,只不过这次,我们用了(,)逗号。所以返回的是命令分隔值,也是字符串的一种。

所以,如果你想在 Golang 中获取 CSV 值,那么你可以使用 Go string.Join() 方法。

你也可以试试函数:-

// abc.go
package main

type deck []string

func (cards deck) toString() string {
    // converts slice to string
    return strings.Join([]string(cards), ",")

}


//main.go
package main

import "fmt"

func main() {
    cards := []string {"Trump", "In", "India", "On", "Feb 25"}
    fmt.Println(cards.toString())

}