Variadic Functions in Golang
variadic function(可變函式)可用不同數量的參數呼叫,最常見的是 fmt.Printf
系列。
宣告 variadic function 時,在最後一個參數的 type 前面加上 ...
,表示這個 function 可以用任意數量的該 type 參數呼叫。
1 | func sum(values ...int) int { |
在此 function 中,values
的 type 是 []int
,call sum()
時可以給任意數量的 int
:
1 | sum() |
caller 會 implicit 分配 array、複製參數,然後將整個 array 的 slice 傳給 sum()
。sum(1, 2, 3)
的行為類似:
1 | values := []int{1, 2, 3} |
參數已經在 slice 中時,以上述方式 call variadic function,即在最後一個參數後面加上 ...
。
雖然 ...int
參數在 function 中的行為如同 slice,但是 func f(...int) {}
跟 func g([]int) {}
兩個 function 的 type 是不同的。