Go 三个点…语法使用
变长的函数参数
函数有多个不定参数的情况,可以接受多个不确定数量的参数。
如果最后一个函数参数的类型的是…T,那么在调用这个函数的时候,我们可以在参数列表的最后使用若干个类型为T的参数。这里,…T在函数内部的类型实际是[]T.
func Sum(nums ...int) int {
res := 0
for _, n := range nums {
res += n
}
return res
}
Sum(1,2,3)
slice打散进行传递
上面调用Sum函数时,是将变长参数分开写的。如果我们有一个slice,那么我们调用时不必将slice拆开再调用,直接在slice后跟…即可:
primes := []int{2, 3, 5, 7}
fmt.Println(Sum(primes...)) // 17
在使用append时,即一个个元素被打散(遍历),然后push进新的slice
可以看到,append函数的定义的第二个参数就是…Type
所以我们重新复制一个slice时,可以直接写为
sliceA:=[]int{}
sliceB:=[]int{1,2,3,4}
SliceA=(SliceA,SliceB...)