概述
在函数的最初一个参数的数据类型之前加上省略号 ...
,示意该参数的数据类型是 变长类型
,
调用该函数时能够传递任意数量 ( 0 - N )
的该类型的参数。
一个函数只能有一个变长参数,且变长参数必须为最初一个参数。
例子
传递一个参数
package mainimport "fmt"func sum(numbers ...int) int { total := 0 for _, num := range numbers { total += num } return total}func main() { fmt.Printf("1 = %d\n", sum(1))}// $ go run main.go// 输入如下 /** 1 = 1*/
传递多个参数
package mainimport "fmt"func sum(numbers ...int) int { total := 0 for _, num := range numbers { total += num } return total}func main() { fmt.Printf("1 + 2 + 3 = %d\n", sum(1, 2, 3))}// $ go run main.go// 输入如下 /** 1 + 2 + 3 = 6*/
传递切片参数
如果要传递 切片类型
数据作为函数参数,只须要在参数前面加上省略号 ...
。
package mainimport "fmt"func sum(numbers ...int) int { total := 0 for _, num := range numbers { total += num } return total}func main() { numbers := []int{1, 2, 3} fmt.Printf("1 + 2 + 3 = %d\n", sum(numbers...)) // 切片变量前面加 ... 即可}// $ go run main.go// 输入如下 /** 1 + 2 + 3 = 6*/
不传递任何参数
package mainimport "fmt"func sum(numbers ...int) int { total := 0 for _, num := range numbers { total += num } return total}func main() { fmt.Printf("不传递任何参数 = %d\n", sum())}// $ go run main.go// 输入如下 /** 不传递任何参数 = 0*/