不定參數是指函數傳入的參數個數為不定數量。
一、函數定義
首先來看如何定義一個不定參數的函數:
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中的不定參數的詳細內容,更多請關注創新互聯成都網站設計公司其它相關文章!
另外有需要云服務器可以了解下創新互聯scvps.cn,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業上云的綜合解決方案,具有“安全穩定、簡單易用、服務可用性高、性價比高”等特點與優勢,專為企業上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。
分享標題:golang中不定參數的應用-創新互聯
網頁URL:http://vcdvsql.cn/article22/dcpocc.html
成都網站建設公司_創新互聯,為您提供服務器托管、網站維護、App開發、網站策劃、網站收錄、微信公眾號
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯