golang中 “...” 符号的几种用法

本文中的go版本:go version go1.17.12 windows/amd64

一、作为函数的可变参数

作为函数的 可变参数,此时 … 写在变量类型的前面,并且 可变参数 一定是函数的最后一个参数 ,示例代码如下:

func main() {

	fmt.Println(Add(1, 2, 3, 1)) //往Add()函数里面 传入了 4个int类型的参数 最终输出结果:7
}

/*
 * 表示 params参数是一个 可变参数 它的类型是int类型 。
 * 即 调用Add()函数的时候 可以给Add()函数传入 一个 或者 n个 int类型的参数
 */
func Add(params ...int) int {

	sum := 0

	for _, v := range params{
		sum  = sum + v
	}

	return sum
}

二、把切片打散传递给函数,调用函数的时候 … 在参数名后面

示例代码如下:


func main() {

    //声明一个int类型的切片
	intSlice := []int{1, 3, 5, 7}

	/*
	 * 调用Add()函数的时候 将intSlice切片打散 传递给Add()函数。
	 *
	 * 即 先将intSlice切片中的1传递给Add()函数 然后再将intSlice切片中的3传递给Add()函数 
	 * 然后再将intSlice切片中的5传递给Add()函数 最后再将intSlice切片中的7传递给Add()函数。
	 *
	 * 最终 Add()函数中的params参数 就是4个int类型的参数了 然后将params中的每个值累加 返回最终结果。 
	 */
	result := Add(intSlice...)

	fmt.Println(result) //输出结果:16
}

func Add(params ...int) int {

	sum := 0

	for _, v := range params{
		sum  = sum + v
	}

	return sum
}

三、用于数组定义时 取代数组的长度

定义一个数组类型的时候,... 相当于指定一个 和 元素个数相同的长度。


定义数组的时候 我们必须手动指定数组的长度。有时候 我们定义的一个数组中 不确定数组长度到底是多少 就可以使用 ... 符号,用了 ... 符号后 golang就会自动替我们推算出定义的 数组的长度 到底是多少。


示例代码如下(以下2种写法 效果是一样的):

func main() {
	
	//声明一个int类型的数组 指定数组长度为3
	intArr := [3]int{1, 3, 5}
	
	//声明一个int类型的数组 指定数组长度为 自动推算
	intArr2 := [...]int{1, 3, 5}

	fmt.Println(len(intArr)) //输出结果:3
	fmt.Println(len(intArr2)) //输出结果:3
}


本文完结。


声明:禁止任何非法用途使用,凡因违规使用而引起的任何法律纠纷,本站概不负责。

小周博客
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

精彩评论

全部回复 0人评论 7,777人参与

loading