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

jgwigjjp  于 2022-12-07  发布在  Go
关注(0)|答案(6)|浏览(317)

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

s8vozzvw

s8vozzvw1#

您可以使用strings.Join(arr \[\]string, separator string) string

tct7dpnv

tct7dpnv2#

这是一个简单的例子,你可以把它粘贴到main函数中:

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

并链接到操场上的working example
或者使用非常简单的函数simple function

moiiocjp

moiiocjp3#

Sprint会做到吗?
"没错"
如果您只关心字符串,而不关心它的具体外观,下面是另一种转换为字符串的方法(请参阅上面strings.Join的答案,以获得更多灵活性)。
此方法(或Sprintf等变体)的优点是,它(几乎)可以处理所有其他数据,如mapsstructs以及实现fmt.Stringer接口的任何自定义类型。

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

这里是working example的链接。

j8ag8udp

j8ag8udp4#

这可以很容易地通过导入字符串包使用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
ekqde3dh

ekqde3dh5#

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

nwsw7zdq

nwsw7zdq6#

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

在上面的代码中,我们首先定义了一个string切片,然后使用reflect包来确定切片的数据类型。我们导入了“strings”模块。()方法,并将字符串切片的所有元素组合成一个字符串。因此,join()函数,将切片转换为字符串。我们传递了空格(““)作为分隔符。所以我们将用空格连接切片元素。
字符串的第二个参数。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())

}

相关问题