Go 示例: 可变参数函数

可变参数函数 可以接受任意数量的尾部参数。例如,fmt.Println 是一个常见的可变参数函数。

package main
import "fmt"

以下是一个接受任意数量 int 作为参数的函数。

func sum(nums ...int) {
    fmt.Print(nums, " ")
    total := 0

在函数内部,nums 的类型等同于 []int。我们可以调用 len(nums),使用 range 迭代它,等等。

    for _, num := range nums {
        total += num
    }
    fmt.Println(total)
}
func main() {

可变参数函数可以用通常的方式使用单个参数调用。

    sum(1, 2)
    sum(1, 2, 3)

如果你已经在一个切片中拥有多个参数,可以使用 func(slice...) 将它们应用于可变参数函数,如下所示。

    nums := []int{1, 2, 3, 4}
    sum(nums...)
}
$ go run variadic-functions.go 
[1 2] 3
[1 2 3] 6
[1 2 3 4] 10

Go 函数的另一个关键方面是它们能够形成闭包,我们将在下一节中探讨。

下一个示例:闭包.