Go Ellipses
最后修改时间 2024 年 4 月 11 日
在本文中,我们将展示如何使用 Ellipses 运算符。
Ellipses (...) 运算符(或三个点)用于可变函数、数组字面量和 go 命令。
Go 可变函数参数
可变函数可以接受任意数量的尾随参数来调用。
main.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` 函数,它可以接受任意数量的整数值。
$ go run main.go 6 10 15
当我们将切片作为参数传递给可变函数时,可以使用三个点。
main.go
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
}
在示例中,我们将一个整数切片传递给 `Sum` 函数。
推断数组长度
在使用带有 Ellipses ... 运算符的数组字面量时,我们可以推断数组长度。
main.go
package main
import "fmt"
func main() {
vals := [...]int{ 1, 2, 3, 4, 5, 6 }
fmt.Println(vals)
}
在代码示例中,我们在数组声明中使用了 ...。这告诉 Go 从提供的数组字面量推断数组的长度。
$ go run main.go [1 2 3 4 5 6]
通配符
Ellipses 可用作 go 命令中的通配符。
$ go list ... archive/tar archive/zip bufio bytes compress/bzip2 compress/flate compress/gzip compress/lzw compress/zlib container/heap container/list container/ring context crypto crypto/aes crypto/cipher ...
该命令递归地列出所有包,包括当前目录中的标准库中的包。
来源
The Go Programming Language Specification
在本文中,我们介绍了 Golang 中的 Ellipses(三个点)运算符。