首頁 > 後端開發 > Golang > 詳解golang中的不定參數

詳解golang中的不定參數

王林
發布: 2019-12-07 09:21:06
原創
3492 人瀏覽過

詳解golang中的不定參數

不定參數是指函數傳入的參數數量為不定數。

一、函數定義

#首先來看如何定義不定參數的函數:

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中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板