可變參數(shù)的函數(shù)可以用任何數(shù)量的參數(shù)來(lái)調(diào)用。 例如,fmt.Println()就是一個(gè)常見(jiàn)的可變函數(shù)。
所有的示例代碼,都放在
F:\worksp\golang目錄下。安裝Go編程環(huán)境請(qǐng)參考:http://www.yiibai.com/go/go_environment.html
這里有一個(gè)函數(shù)將任意數(shù)量的int作為參數(shù)??勺儏?shù)的函數(shù)可以通過(guò)單獨(dú)的參數(shù)以通常的方式調(diào)用。
如果已經(jīng)在一個(gè)切片中有多個(gè)參數(shù),使用func(slice ...)函數(shù)將它們應(yīng)用到一個(gè)可變函數(shù)。
Go中的函數(shù)的另一個(gè)關(guān)鍵方面是它們形成閉包的能力,我們將在下面討論和學(xué)習(xí)。
variadic-functions.go的完整代碼如下所示 -
package main
import "fmt"
// Here's a function that will take an arbitrary number
// of `ints` as arguments.
func sum(nums ...int) {
fmt.Print(nums, " ")
total := 0
for _, num := range nums {
total += num
}
fmt.Println(total)
}
func main() {
// Variadic functions can be called in the usual way
// with individual arguments.
sum(1, 2)
sum(1, 2, 3)
// If you already have multiple args in a slice,
// apply them to a variadic function using
// `func(slice...)` like this.
nums := []int{1, 2, 3, 4}
sum(nums...)
}
執(zhí)行上面代碼,將得到以下輸出結(jié)果 -
F:\worksp\golang>go run variadic-functions.go
[1 2] 3
[1 2 3] 6
[1 2 3 4] 10