ZetCode

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

作者

我的名字是 Jan Bodnar,我是一名热情的程序员,拥有丰富的编程经验。我自 2007 年以来一直在撰写编程文章。迄今为止,我已撰写了 1,400 多篇文章和 8 本电子书。我在教授编程方面拥有超过十年的经验。

列出所有 Go 教程