首页 >后端开发 >Golang >Go 可变参数函数可以混合枚举参数和现有切片吗?

Go 可变参数函数可以混合枚举参数和现有切片吗?

DDD
DDD原创
2024-12-13 07:22:12917浏览

Can Go Variadic Functions Mix Enumerated Arguments and Existing Slices?

在可变参数函数中混合“分解”切片和常规参数

在 Go 中,可变参数函数允许任意数量的参数。但是,在指定参数时,不可能同时组合枚举元素和现有切片。

可变参数语法

传递给可变参数的值可以是通过指定:

  1. 枚举单个元素:func(arg1, arg2, arg3 ...string) {}
  2. 使用现有切片: func(s []string) {}

混合枚举元素和切片

下面的代码不会编译:

func main() {
    stuff := []string{"baz", "bla"}
    foo("bar", stuff...) // compile error: too many arguments
}

func foo(s ...string) {}

这是因为 Go不允许混合两种语法。枚举单个元素时,会创建一个新切片。使用现有切片时,相同的切片将用作可变参数。

限制原因

限制是由于 Go 处理可变参数的方式造成的。枚举元素时,会创建一个新切片来保存值。但是,如果传递现有切片,则不会创建新切片。相反,传递的切片直接分配给可变参数。混合两者需要分配一个新切片,目前不支持。

以上是Go 可变参数函数可以混合枚举参数和现有切片吗?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn