Go 可变长参数列表

支持可变长参数列表的函数可以支持任意个传入参数,比如fmt.Println函数就是一个支持可变长参数列表的函数。

  1. package main
  2. import "fmt"
  3. // 这个函数可以传入任意数量的整型参数
  4. func sum(nums ...int) {
  5. fmt.Print(nums, " ")
  6. total := 0
  7. for _, num := range nums {
  8. total += num
  9. }
  10. fmt.Println(total)
  11. }
  12. func main() {
  13. // 支持可变长参数的函数调用方法和普通函数一样
  14. // 也支持只有一个参数的情况
  15. sum(1, 2)
  16. sum(1, 2, 3)
  17. // 如果你需要传入的参数在一个切片中,像下面一样
  18. // "func(slice...)"把切片打散传入
  19. nums := []int{1, 2, 3, 4}
  20. sum(nums...)
  21. }

输出结果为

  1. [1 2] 3
  2. [1 2 3] 6
  3. [1 2 3 4] 10

需要注意的是,可变长参数应该是函数定义的最右边的参数,即最后一个参数。