func hello(a int, b ...int) {
}
在上面的函数中,参数b
是可变的,它的前缀是省略号,可以接受任意数量的参数值。这个函数的调用示例:
hello(1, 2) //将一个参数值“2”传递给b
hello(5, 6, 7, 8, 9) //将参数值“6、7、8、9”传递给b
对于变参,也可以不传入参数值。
hello(1)
变参只能放在最后。假设我们把变参放在前面,如下所示:
func hello(b ...int, a int) {
}
在上面的函数中,不可能将参数值传递给参数a
,因为传递的任何参数都将被分配给第一个参数b
,因为它是可变参数。
因此,变参只能出现在最后。上面的函数将报编译错误:
syntax error: cannot use ... with non-final parameter b