【发布时间】:2015-04-21 22:18:12
【问题描述】:
我想知道为什么不能在 go 中执行以下操作:
func main() {
stuff := []string{"baz", "bla"}
foo("bar", stuff...)
}
func foo(s ...string) {
fmt.Println(s)
}
在我的理解中,切片...“分解”切片,因此它可以用于多参数函数调用。所以上面的例子实际上应该扩展为foo("bar", "baz", "bla")。
foo(stuff...) 按预期工作,这并不奇怪,但在上面的示例中,编译器抱怨参数太多。
这是一个期望的限制吗?我来自红宝石背景,foo("bar", *stuff) 非常好(至少在我的书中,同样的事情),这就是为什么这让我感到惊讶。
【问题讨论】: