当我编译下面的程序时
func myPrint(v ...interface{}) {
fmt.Println("Hello", v...)
}
func main() {
myPrint("new", "world")
}
编译错误
too many arguments in call to fmt.Println
我认为 v... 将扩展为第二个、第三个参数,而 fmt.Println 会看到三项可变参数列表。我认为这相当于
fmt.Println("Hello", "new", "world")
为什么会报错。
最佳答案
试试这个。它将 Hello 添加到可变参数前面,然后使用 println
将它们全部打印出来。
package main
import "fmt"
func myPrint(v ...interface{}) {
a := append([]interface{}{"Hello"}, v...) // prepend "Hello" to variadics
fmt.Println(a...) // println the whole lot
}
func main() {
myPrint("new", "world")
}
关于戈朗 : Variable argument,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33092994/