众所周知,Go语言是严格类型语言,而开发的时候又遇到传入参数不定的状况,怎么办?php
这里的三个点(...),就给咱们编程人员带来很大的灵活性,具体以下java
可参考https://github.com/guyan0319/...git
示例github
package main import "fmt" func main() { //multiParam 能够接受可变数量的参数 multiParam("jerry", "herry") names := []string{"jerry", "herry"} multiParam(names...) } func multiParam(args ...string) { //接受的参数放在args数组中 for _, e := range args { fmt.Println(e) } }
须要注意的是,可变参数是函数最右边的参数,普通参数放在左侧,能够0到n个。如golang
package main import "fmt" func main() { //multiParam 能够接受可变数量的参数 multiParam("jerry", 1) multiParam("php", 1, 2) } func multiParam(name string, args ...int) { fmt.Println(name) //接受的参数放在args数组中 for _, e := range args { fmt.Println(e) } }
s
若是使用s...
符号解压缩切片,则能够将切片直接传递给可变参数函数。在这种状况下,不会建立新的切片。编程
示例数组
package main import "fmt" func main() { //multiParam 能够接受可变数量的参数 names := []string{"jerry", "herry"} multiParam(names...) } func multiParam(args ...string) { //接受的参数放在args数组中 for _, e := range args { fmt.Println(e) } }
还有一种状况就是经过append合并两个slice,app
stooges := []string{"Moe", "Larry", "Curly"} lang := []string{"php", "golang", "java"} stooges = append(stooges, lang...) fmt.Println(stooges)//[Moe Larry Curly php golang java]
在数组文字中,...
符号指定的长度等于文字中元素的数量。函数
stooges := [...]string{"Moe", "Larry", "Curly"} arr := [...]int{1, 2, 3} fmt.Println(len(stooges)) fmt.Println(len(arr))
这里...
也能够不用。测试
go
描述软件包列表时,命令使用三个点做为通配符。
此命令测试当前目录及其子目录中的全部软件包。
$ go test ./...
参考:
https://yourbasic.org/golang/...