在线文档  >   Golang练习   >   变参函数

Golang中可变参数函数,在调用时可以传递任意数量的参数。 例如,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)

    //如果您已经有多个参数在一个slice中,则可以使用`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 函数的另一个关键特性:闭包