golang ... 的4种用法

195 阅读1分钟

1. 函数变参

若函数的最后一个参数是…T类型,这个参数可传入任意个T类型的参数,在函数中…T的类型为[]T.

func f1(a ...int) {
    fmt.Println(reflect.TypeOf(a)) // []int
}

2. 解序列

同第1点相呼应,将slice … 作为函数变参传入

var a = []interface{}{1, 2, 3}
fmt.Println(a...) // 1 2 3
f1(a) // []int

3. 定义数组

在一个数组的声明中,...相当于指定一个和元素个数相同的长度

下面样例中,注意类型差别,一个为数组一个为且切片

func f2() {
    var a = [...]int{1, 2, 3}                         // [3]int
    var b = []int{1, 2, 3}                            // []int
    fmt.Println(reflect.TypeOf(a), reflect.TypeOf(b)) // [3]int []int
}

4. 用在Go命令中

作为列出所有的通配符

go test ./...
go install pushsvr/...