①可变参数函数(Variadic Functions): 在函数定义中,“…” 可以用于表示可变参数。这使得函数可以接受任意数量的参数。例如:
func sum(nums ...int) int {
total := 0
for _, num := range nums {
total += num
}
return total
}
func main() {
result := sum(1, 2, 3, 4, 5)
fmt.Println(result) // 输出: 15
}
②如果一个切片后面跟着 “…”,它会被展开为一个个的元素,如下输出15:
import "fmt"
func main() {
nums := []int{1, 2, 3, 4, 5}
fmt.Println(sum(nums...))
}
func sum(nums ...int) int {
total := 0
for _, num := range nums {
total += num
}
return total
}
但是去掉fmt.Println(sum(nums...))
的三个点,报错:cannot use nums (variable of type []int) as int value in argument to sum
这里传递的不是切片是多个整数!!!比如如下输出12
func main() {
nums := []int{1, 2, 3, 4, 5}
fmt.Println(sum(nums[2:]...))
}
func sum(nums ...int) int {
total := 0
for _, num := range nums {
total += num
}
return total
}
以及fmt.Println(sum(nums[2]))
输出3
③在数组的定义中,如果使用 “…” 表示长度,Go 语言会根据初始化值的个数自动计算数组的长度。数组的长度是固定的,声明时需要指定数组的长度。切片是动态长度的,声明时不需要指定长度。