衆所周知,Go語言是嚴格類型語言,而開發的時候又遇到傳入參數不定的情況,怎麼辦?
這裏的三個點(...),就給我們編程人員帶來很大的靈活性,具體如下
函數可變數量參數
可參考https://github.com/guyan0319/...
示例
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個。如
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,
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
描述軟件包列表時,命令使用三個點作爲通配符。
此命令測試當前目錄及其子目錄中的所有軟件包。
$ go test ./...
參考:
https://yourbasic.org/golang/...