支持可變長參數列表的函數能夠支持任意個傳入參數,好比fmt.Println函數就是一個支持可變長參數列表的函數。函數
package main import "fmt" func main() { fmt.Println(add()) fmt.Println(add(1, 2, 3, 4, 5, 6)) //使用切片做爲參數 arr := []int{1, 2, 3, 4, 5, 6} fmt.Println(add(arr...)) } //可變參數的 函數 func add(arr ...int) (result int) { fmt.Printf("arr->type= %T \n", arr) for _, value := range arr { result += value } return result }
注意事項:spa
當一個函數在其函數體內調用自身時,則稱之爲遞歸,遞歸函數對於解決數學上的問題是很是有用的,好比計算階乘,生成斐波那契數列等。
構成遞歸需具有的條件:code
package main import "fmt" func main() { //使用切片做爲參數 fmt.Println(factorial(10)) } //可變參數的 函數 func factorial(num int) int { if num <= 0 { return 1 } return num * factorial(num-1) }