可變參數
- 參數數量可變的函數稱為可變參數函數
- 在聲明可變參數函數時,需要在參數列表的最后一個參數類型之前加上省略符號"···",這表示該函數會接收任意數量的該類型參數。
func sum(values...int) {
total := 0
for _, value := range values {
total += value
}
return total
}
- 上面的sum函數返回任意個int參數的和。
- 在函數體中,values被看做是類型為 []int 的切片。sum函數可以接收任意個數量的int參數
fmt.Println(sum()) //"0"
fmt.Println(sum(3)) //"3"
fmt.Println(sum(1,2,3,4)) //"10"
- 上面的代碼中,調用者隱式地創建一個數組,并將原始參數復制到數組中,再把數組的一個切片作為參數傳給被調用函數。
- 如果原始參數已經是切片類型,我們該如何傳遞給sum?只需要在最后一個參數后加上省略號。
values := []int{1,2,3,4}
fmt.Println(sum(values...)) //"10"
- 雖然在可變參數函數內部,···int 型參數的行為看起來很像切片類型,但是實際上,可變參數函數和以切片作為參數的函數是不同的。
func f(...int) {}
func g([]int) {}
fmt.Println("%T\n", f) //"func(...int)"
fmt.Println("%T\n", g) //"func([]int)"
最后編輯于 :
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。