本文介绍如何使用Go中省略号操作。省略号(…)操作用于可变参数函数,数组长度推断,取分片元素值,以及go 命令。
Go可变参数
可变参数函数是函数末尾参数调用时可以包括任意数量参数。举例:
package main
import "fmt"
func main() {
fmt.Println(Sum(1, 2, 3))
fmt.Println(Sum(1, 2, 3, 4))
fmt.Println(Sum(1, 2, 3, 4, 5))
}
func Sum(n ...int) int {
sum := 0
for _, n := range n {
sum += n
}
return sum
}
Sum函数接收任意数量整型参数。运行上面示例,结果为:
6
10
15
取分片元素值
当给可变参数传入分片时,可以能使用省略号取分片的值。下面示例给可变参数函数Sum传入分片变量vals:
package main
import "fmt"
func main() {
vals := []int{1, 2, 3, 4, 5, 6, 7}
fmt.Println(Sum(vals...))
}
func Sum(n ...int) int {
sum := 0
for _, n := range n {
sum += n
}
return sum
}
推断数组长度
当创建数组变量时,初始化一些元素,需使用省略号推断数组长度:
package main
import "fmt"
func main() {
vals := [...]int{ 1, 2, 3, 4, 5, 6 }
fmt.Println(vals)
}
上面示例使用省略号声明数组,即告诉go基于数组元素推断长度。运行结果如下:
[1 2 3 4 5 6]
通配符
省略号还可以在go命令中使用,作为通配符使用。
# 递归列举所有包,包括标准库中包
go list ...
# 查看net开头的包
go list net...