在可变参数函数中混合“分解”切片和常规参数
在 Go 中,可变参数函数允许任意数量的参数。但是,在指定参数时,不可能同时组合枚举元素和现有切片。
可变参数语法
传递给可变参数的值可以是通过指定:
混合枚举元素和切片
下面的代码不会编译:
func main() { stuff := []string{"baz", "bla"} foo("bar", stuff...) // compile error: too many arguments } func foo(s ...string) {}
这是因为 Go不允许混合两种语法。枚举单个元素时,会创建一个新切片。使用现有切片时,相同的切片将用作可变参数。
限制原因
限制是由于 Go 处理可变参数的方式造成的。枚举元素时,会创建一个新切片来保存值。但是,如果传递现有切片,则不会创建新切片。相反,传递的切片直接分配给可变参数。混合两者需要分配一个新切片,目前不支持。
以上是Go 可变参数函数可以混合枚举参数和现有切片吗?的详细内容。更多信息请关注PHP中文网其他相关文章!