Go 三個點(...)用法

衆所周知,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/...

links

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章