Go 三个点...语法使用

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

image-20211204212332060

可以看到,append函数的定义的第二个参数就是…Type

所以我们重新复制一个slice时,可以直接写为

sliceA:=[]int{}
sliceB:=[]int{1,2,3,4}
SliceA=(SliceA,SliceB...)

   转载规则


《Go 三个点...语法使用》 朱林刚 采用 知识共享署名 4.0 国际许可协议 进行许可。
 上一篇
HTTP/2详解 HTTP/2详解
HTTP/2详解简介HTTP/2主要是为了解决现HTTP 1.1性能不好的问题才出现的。当初Google为了提高HTTP性能,做出了SPDY,它就是HTTP/2的前身,后来也发展成为HTTP/2的标准。 HTTP/2兼容HTTP 1.1,例
下一篇 
Go函数 Go函数
Go函数Go函数定义func name(params)(return params){ function body } //eg,如果相邻的参数类型是相同的,则可以省略前一个类型 func cal(a,b int) int{ retur
2021-11-18
  目录