Go by Example: Variadic Functions


可变参数函数在调用时可以接收任意个数的参数。例如,fmt.Println是一个常见的可变参数函数。

variadic-function.go

package main

import "fmt"

func sum(nums ... int) {    //这个函数将使用任意个数的int做为参数
    fmt.Print(nums, "")
    total := 0
    for _,num := range nums {
    total += num
    }
    fmt.Println(total)
}

func main() {
    sum(1, 2)    //可变参数函数通常使用多个参数做为参数被调用
    sum(1, 2, 3)
    nums := []int{1, 2, 3, 4}    //如果你已经有了一个多参数的切片
                                 //那么可以使用func(slice...)来调用使用。如下:
    sum(nums ...)
}

运行结果:

$ go run variadic-function.go 
[1 2]3
[1 2 3]6
[1 2 3 4]10


Go语言的函数的另外一方面是它形成的闭包。下节学习。