【Golang】三个...的用法
es6
中有扩展运算符,形如...
,三个点, 对象中的扩展运算符(...
)用于取出参数对象中的所有可遍历属性,拷贝到当前对象之中。 在Golang中也是有...
,但是好像却没有名字,可能是博主孤陋寡闻吧。
下面就汇总一下...
在Golang
中的用法。
1.在数组中
最原始,最简单声明或初始化,就是直接指明数组长度:
var intArray [10]int
var strArray [5]string{"成都","高新区"}
fmt.Println(intArray)
fmt.Println(strArray)
上面的方法虽然简单,但是每次都要确保提供的初始值与数组长度一致,开发者不提供初始值,编译器也会使用类型的零值帮助补全,上面的输出如下:
[0 0 0 0 0 0 0 0 0 0]
[成都 高新区 ]
我们可以使用...
来声明,让编译器根据初始值的个数自行推断数组的长度
var intArray = [...]int{}
var intArray1 = [...]int{1}
var strArray = [...]string{"成都", "高新区"}
fmt.Println(intArray)
fmt.Println(intArray1)
fmt.Println(strArray)
[]
[1]
[成都 高新区]
2.在函数中
2.1 可变参数定义
在 【Golang】快速复习指南QuickReview(四)——函数提到了可变参数…
func Sum(x ...int) int {
//此时x是一个切片
sum := 0
for _, v := range x {
sum = sum + v
}
return sum
}
需要注意的点:可变参数一定是函数最右侧的参数。
2.2 可变参数传值
调用具有可变参数的函数时,除了传不定数量的参数,还可以使用...
用以解压切片传值:
func main(){
var intA = []int{1, 2, 3}
sum1 := Sum(1, 2, 3, 4, 5)
sum2 := Sum(intA...)
println(sum1)
println(sum2)
}
func Sum(x ...int) int {
//此时x是一个数组
sum := 0
for _, v := range x {
sum = sum + v
}
return sum
}
15
6
类似的,还可以参考内置函数append()
func append(slice []Type, elems ...Type) []Type
当append一个切片时,用法与上面是一样的:
var intA = []int{1, 2, 3}
var intB = []int{5}
intA = append(intA, intB...)
- 原文作者:Garfield
- 原文链接:http://www.randyfield.cn/post/2021-03-31-...-advanced/
- 版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可,非商业转载请注明出处(作者,原文链接),商业转载请联系作者获得授权。