go - Golang解压缩可变参数

标签 go

如何在golang中通过...解压缩可变参数:

func run(a, b string, list ...int) {
}

func call(list ...int) {
    run(x, y, list...) // use "list..." is not allowed 
}

func main() {
    a := []int{1, 2, 3}
    call(a...)
}

为什么这是非法的?如我所知,list参数是一个 slice ,可以由...解压缩。

最佳答案

解压缩可变参数


例如,

package main

import "fmt"

func run(a, b string, list ...int) {
    fmt.Println(list)
    for i, e := range list {
        fmt.Println(i, e)
    }
}

func call(list ...int) {
    fmt.Println(list)
    var x, y string
    run(x, y, list...) // use "list..." is allowed
}

func main() {
    a := []int{1, 2, 3}
    fmt.Println(a)
    call(a...)
}

游乐场:https://play.golang.org/p/NI0L-nVVUxm

输出:
[1 2 3]
[1 2 3]
[1 2 3]
0 1
1 2
2 3

关于go - Golang解压缩可变参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59475034/

相关文章:

go - 由于运行状况检查超时,BlueMix 未启动

go - 无法将接口(interface) slice 传递给空白接口(interface)类型函数

go - 在 go 中使用多个返回值的惯用错误和值顺序

http - 上下文不超时

go - 在 Go 中将 float64 转换为 int

go - `type foo struct` 和 `type foo []struct` 之间的区别

go - 有没有办法让主机上的所有打开的http连接都进入?

go - godoc本身的源代码在哪里?

覆盖变量时的递归

amazon-web-services - 组织调用 lambda 函数