首页 > 后端开发 > Golang > 为什么我不能在 Go 的可变参数函数中混合'分解”切片和常规参数?

为什么我不能在 Go 的可变参数函数中混合'分解”切片和常规参数?

Susan Sarandon
发布: 2024-12-17 19:13:19
原创
529 人浏览过

Why Can't I Mix

在可变参数函数中混合“爆炸”切​​片和常规参数

Go 不允许在可变参数函数中混合“爆炸”切​​片和常规参数。这在以下示例中很明显:

func main() {
    stuff := []string{"baz", "bla"}
    foo("bar", stuff...) // Error: too many arguments in call to foo
}

func foo(s ...string) {
    fmt.Println(s)
}
登录后复制

根据 Go 语言规范,可以通过两种方式指定可变长度参数:枚举元素或使用现有切片。不允许混合两者。

枚举元素时,会创建一个新切片,其中元素将成为可变参数的值。但是,当现有切片与...一起使用时,不会创建新切片,并且原始切片将成为可变参数。

同时传递单个元素和切片将导致类型不匹配,从而导致编译器错误。混合这两个选项需要分配一个新的切片,但 Go 不支持这种行为。

错误消息“too much argument in call to foo”表明编译器需要单个切片或元素列表,但不是两者的组合。要解决此问题,请删除内容...或单独枚举元素。

以上是为什么我不能在 Go 的可变参数函数中混合'分解”切片和常规参数?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板