不定參數是指函數傳入的參數數量為不定數。
一、函數定義
#首先來看如何定義不定參數的函數:
func YourFun(v... interface{}){ }
此函數定義,定義了一個接受任何數目任何類型參數的函數。這裡特殊的語法是三個點“...
”,在一個變數後面加上三個點後,表示從該處開始接受不定參數,不同於python,golang的不定參數如果將這裡"interface{}
" 替換成某一確定類型,那麼其就只能接受該類型的不定參數。
二、「...」
上面我們看到有三個點」..."的特殊標記。那麼這三個點"..."有啥作用呢?
2.1 不定參數
如上所述,在定義不定參數時,表示從該參數開始記錄不定參數
2.2 解引用slice
當要傳遞若干個值到不定參數函數中得時候,可以手動書寫每個參數,也可以將一個slice傳遞給該函數:
YourFunc (YourSlice...)
透過"...
"可以將slice中得參數對應的傳遞給函數。相當於python中得「*args」。
這裡要注意的是,解引用slice目前只能在不定參數函數傳遞參數時使用,在其他地方使用會報錯。
三、遍歷參數
下面我們來看一個實例:
func P (v... string) { for _,item := range v { fmt.Println("item:",item) } } func main() { var l []string l = append(l,"a") l = append(l,"b") fmt.Println("l is ",l) P(l...) }
這裡我們看到的結果是,首先一個完整的list,然後是每個元素:
l is [a b] item: a item: b
透過配合使用for...range
可以遍歷不定參數v中得每個參數。這裡我們將不定參數類型設為string,因此只能接受若干的string 類型的參數。
相關文章教學推薦:golang教學
#以上是詳解golang中的不定參數的詳細內容。更多資訊請關注PHP中文網其他相關文章!