3 回答

TA贡献1824条经验 获得超5个赞
转换
A := []int{1, 2, 3, 4, 5, 6, 7, 8, 9}
对于单行分隔的字符串,例如
“1,2,3,4,5,6,7,8,9” ,请
使用:
strings.Trim(strings.Join(strings.Fields(fmt.Sprint(A)), delim), "[]")
或者:
strings.Trim(strings.Join(strings.Split(fmt.Sprint(A), " "), delim), "[]")
或者:
strings.Trim(strings.Replace(fmt.Sprint(A), " ", delim, -1), "[]")
并从一个函数中返回它,例如在这个例子中:
package main
import "fmt"
import "strings"
func arrayToString(a []int, delim string) string {
return strings.Trim(strings.Replace(fmt.Sprint(a), " ", delim, -1), "[]")
//return strings.Trim(strings.Join(strings.Split(fmt.Sprint(a), " "), delim), "[]")
//return strings.Trim(strings.Join(strings.Fields(fmt.Sprint(a)), delim), "[]")
}
func main() {
A := []int{1, 2, 3, 4, 5, 6, 7, 8, 9}
fmt.Println(arrayToString(A, ",")) //1,2,3,4,5,6,7,8,9
}
要在逗号后包含一个空格,您可以调用arrayToString(A, ", ")或相反地将返回定义为return strings.Trim(strings.Replace(fmt.Sprint(a), " ", delim + " ", -1), "[]")强制将其插入分隔符之后。

TA贡献1830条经验 获得超3个赞
我今天刚遇到同样的问题,因为我在标准库上没有找到任何东西,我重新编译了 3 种方法来进行这种转换
创建一个字符串并通过使用 strconv.Itoa 对其进行转换来附加数组中的值:
func IntToString1() string {
a := []int{1, 2, 3, 4, 5}
b := ""
for _, v := range a {
if len(b) > 0 {
b += ","
}
b += strconv.Itoa(v)
}
return b
}
创建一个 []string,转换每个数组值,然后从 []string 返回一个连接的字符串:
func IntToString2() string {
a := []int{1, 2, 3, 4, 5}
b := make([]string, len(a))
for i, v := range a {
b[i] = strconv.Itoa(v)
}
return strings.Join(b, ",")
}
将 []int 转换为字符串并替换/修剪值:
func IntToString3() string {
a := []int{1, 2, 3, 4, 5}
return strings.Trim(strings.Replace(fmt.Sprint(a), " ", ",", -1), "[]")
}
性能因实现而异:
BenchmarkIntToString1-12 3000000 539 ns/op
BenchmarkIntToString2-12 5000000 359 ns/op
BenchmarkIntToString3-12 1000000 1162 ns/op
就个人而言,我将使用 IntToString2,因此最终函数可能是我项目中的一个 util 包,如下所示:
func SplitToString(a []int, sep string) string {
if len(a) == 0 {
return ""
}
b := make([]string, len(a))
for i, v := range a {
b[i] = strconv.Itoa(v)
}
return strings.Join(b, sep)
}

TA贡献1801条经验 获得超8个赞
你总是可以json.Marshal:
data := []int{1,2,3}
s, _ := json.Marshal(data)
fmt.Println(string(s))
// output: [1, 2, 3]
fmt.Println(strings.Trim(string(s), "[]"))
//output 1,2,3
- 3 回答
- 0 关注
- 158 浏览
添加回答
举报