Go 三個點(...)用法

衆所周知,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描述軟件包列表時,命令使用三個點做爲通配符。

此命令測試當前目錄及其子目錄中的全部軟件包。

$ go test ./...

參考:

https://yourbasic.org/golang/...

links

相關文章
相關標籤/搜索