Go 语言中`... `的使用
1. 可变参数(Variadic Parameters)
在函数声明中,...
可以用来表示函数接受可变数量的参数。这些参数被收集到一个切片中,并可以在函数体内进行处理。
例如,假设我们有一个函数 sum
,它可以计算任意数量的整数之和:
func sum(nums ...int) int {
total := 0
for _, num := range nums {
total += num
}
return total
}
在这个函数中,nums ...int
表示 sum
函数接受任意数量的 int
类型参数,并将它们收集到名为 nums
的切片中。
我们可以这样调用 sum
函数:
fmt.Println(sum(1, 2, 3)) // 输出 6
fmt.Println(sum(4, 5, 6, 7)) // 输出 22
2. 切片的展开(Slicing/Spreading)
在某些情况下,我们可能需要将一个切片的元素分别传递给函数,而不是将整个切片传递给函数。这时,...
可以用来展开切片。
例如,假设我们有一个函数 min
,它返回一组整数中的最小值:
func min(nums ...int) int {
if len(nums) == 0 {
return 0
}
min := nums[0]
for _, num := range nums {
if num < min {
min = num
}
}
return min
}
现在,如果我们有一个整数切片 nums := []int{3, 1, 4, 1, 5}
,我们可以使用 ...
来展开切片并将其传递给 min
函数:
nums := []int{3, 1, 4, 1, 5}
fmt.Println(min(nums...)) // 输出 1
在这里,nums...
将切片 nums
展开为一组参数,并将其传递给 min
函数。