不定參數是指函數傳入的參數個數為不定數量。
一、函數定義
首先來看如何定義一個不定參數的函數:
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中的不定參數的詳細內容,更多請關注億速云其它相關文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。