在Go中将切片/数组解包为函数参数:是否有类似JS/Python的展开运算符?
大家好。我最近开始写Go,从Python和JavaScript转过来。在那些语言中,使用`*`(Python)或`...`(JS中的spread)将数组或列表传递给接受多个参数的函数非常方便。例如,在Python中我可以这样写`my_func(*my_list)`。
现在在Go中,我有一个接受多个字符串参数的函数:
```go
func printNames(name1, name2, name3 string) {
fmt.Println(name1, name2, name3)
}
```
并且我有一个字符串切片:
```go
names := []string{"Alice", "Bob", "Charlie"}
```
如何将这个切片的元素作为单独的参数传递给`printNames`函数?我尝试直接写`printNames(names...)`,但编译器报错,说不能在固定参数的函数中使用`...`对切片进行解包。我还尝试显式解包,比如`names[0], names[1], names[2]`——这能工作,但如果我有10个元素,那就成了噩梦。
请问,Go中是否有方法将切片或数组解包?