Golang是否支持可变函数?

时间:2013-10-08 02:33:19

标签: go

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

像这样的东西

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

  func main() {
        fmt.Println("Hello, playground")
        fmt.Println(Add(1, 3, 4, 5,))
  }

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

3 个答案:

答案 0 :(得分:92)

根据我的判断,你已经得到了它,但语法是...int。见the spec

  

给定功能并致电

func Greeting(prefix string, who ...string)
Greeting("hello:", "Joe", "Anna", "Eileen")
     在问候语

中,who将具有值[]string{"Joe", "Anna", "Eileen"}

答案 1 :(得分: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,))
}

答案 2 :(得分:1)

Golang有一个非常简单的可变参数函数除法

可变参数函数可以使用任意数量的尾随参数来调用。例如,fmt.Println是常见的可变参数函数。

这是一个将任意数量的int作为参数的函数。

package main

import (
    "fmt"
)

func sum(nums ...int) {
    fmt.Println(nums)
    for _, num := range nums {
        fmt.Print(num)
    }
}

func main() {
    sum(1, 2, 3, 4, 5, 6)
}

以上程序的输出:

  

[1 2 3 4 5 6]

     

1 2 3 4 5 6