Go语言中...(三个点)的使用几个常见情况

①可变参数函数(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 语言会根据初始化值的个数自动计算数组的长度。数组的长度是固定的,声明时需要指定数组的长度。切片是动态长度的,声明时不需要指定长度。

你可能感兴趣的:(Go,golang,算法,开发语言)