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(三个点)运算符。