英文:
How to join a slice of strings into a single string?
问题
以下是翻译好的内容:
package main
import (
"fmt"
"strings"
)
func main() {
reg := [...]string {"a","b","c"}
fmt.Println(strings.Join(reg,","))
}
给我一个错误:
prog.go:10: 无法将 reg (类型 [3]string) 作为参数传递给 strings.Join 的类型 []string
是否有比循环和添加到变量更直接/更好的方法?
英文:
package main
import (
"fmt"
"strings"
)
func main() {
reg := [...]string {"a","b","c"}
fmt.Println(strings.Join(reg,","))
}
gives me an error of:
>prog.go:10: cannot use reg (type [3]string) as type []string in argument to strings.Join
Is there a more direct/better way than looping and adding to a var?
答案1
得分: 257
你的问题标题是:
如何将字符串切片连接成一个字符串?
但实际上,reg
不是一个切片,而是一个长度为三的数组。[...]string
只是语法糖,表示(在这种情况下)[3]string
。
要获取一个真正的切片,你应该这样写:
reg := []string {"a","b","c"}
(在这里尝试一下:https://play.golang.org/p/vqU5VtDilJ。)
顺便说一下,如果你确实需要将字符串数组连接成一个字符串,你可以通过添加 [:]
来从数组中获取一个切片,像这样:
fmt.Println(strings.Join(reg[:], ","))
(在这里尝试一下:https://play.golang.org/p/zy8KyC8OTuJ。)
英文:
The title of your question is:
> How to join a slice of strings into a single string?
but in fact, reg
is not a slice, but a length-three array. [...]string
is just syntactic sugar for (in this case) [3]string
.
To get an actual slice, you should write:
reg := []string {"a","b","c"}
(Try it out: https://play.golang.org/p/vqU5VtDilJ.)
Incidentally, if you ever really do need to join an array of strings into a single string, you can get a slice from the array by adding [:]
, like so:
fmt.Println(strings.Join(reg[:], ","))
(Try it out: https://play.golang.org/p/zy8KyC8OTuJ.)
答案2
得分: 127
使用切片而不是数组。只需使用以下代码创建切片:
reg := []string{"a", "b", "c"}
另一种方法是在连接时将数组转换为切片:
fmt.Println(strings.Join(reg[:], ","))
英文:
Use a slice, not an arrray. Just create it using
reg := []string {"a","b","c"}
An alternative would have been to convert your array to a slice when joining :
fmt.Println(strings.Join(reg[:],","))
Read the Go blog about the differences between slices and arrays.
答案3
得分: 44
这在2018年仍然相关。
转换为字符串
import strings
stringFiles := strings.Join(fileSlice[:], ",")
再次转换为切片
import strings
fileSlice := strings.Split(stringFiles, ",")
英文:
This is still relevant in 2018.
To String
import strings
stringFiles := strings.Join(fileSlice[:], ",")
Back to Slice again
import strings
fileSlice := strings.Split(stringFiles, ",")
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论