Golang是否支持可变函数?

63 go

我想知道无论如何我可以在Go中为未知数量的变量定义一个函数.

像这样的东西

 func Add(num1... int) int {
    return args
  }

  func main() {
        fmt.Println("Hello, playground")
        fmt.Println(Add(1, 3, 4, 5,))
  }
Run Code Online (Sandbox Code Playgroud)

我想概括为任意数量的输入添加函数.

Ale*_*uer 93

从我所知道的,你已经得到了它,但语法是...int.看规范:

鉴于功能和电话

func Greeting(prefix string, who ...string)
Greeting("hello:", "Joe", "Anna", "Eileen")
Run Code Online (Sandbox Code Playgroud)

在问候中,who将有价值[]string{"Joe", "Anna", "Eileen"}

  • TL; DR; varargs被隐式转换为切片.如果你想要任意类型的varargs,请使用... interface {} (18认同)
  • 没关系,我已经弄清楚了。如果其他人遇到问题,我是这样做的:https://play.golang.org/p/PvqevBGAAv (2认同)

小智 6

使用可变参数时,需要在函数内的数据类型中使用循环.

func Add(nums... int) int {
    total := 0
    for _, v := range nums {
        total += v
    }
    return total  
}

func main() {
    fmt.Println("Hello, playground")
    fmt.Println(Add(1, 3, 4, 5,))
}
Run Code Online (Sandbox Code Playgroud)