1、不定參數類型
不定參數是指函數傳入的參數個數為不定數量。
package main
import (
"fmt"
)
//不定參數函數
func Add(a int, args ...int) (result int) {
result += a
for _, arg := range args {
result += arg
}
return
}
func main() {
fmt.Println(Add(1, 2, 3, 4, 5, 6, 7, 8, 9, 10))
}
代碼中的args是一個數組切片,而且只能放在參數中的最后面。
2、不定參數的傳遞
package main
import (
"fmt"
)
//不定參數函數
func Add(a int, args ...int) (result int) {
result += a
for _, arg := range args {
result += arg
}
return
}
func SetData(args ...int) (result int) {
//不定參數的傳遞
return Add(1, args...)
}
func main() {
fmt.Println(SetData(1, 2, 3)) //輸出7
array := []int{1, 2, 3, 4}
fmt.Println(Add(1, array...)) //輸出11
}
3、任意類型的不定參數
package main
import (
"fmt"
)
/*
任意類型的不定參數,用interface{}表示
*/
func MyPrintf(args ...interface{}) {
for _, arg := range args { //迭代不定參數
switch arg.(type) {
case int:
fmt.Println(arg, "is int")
case string:
fmt.Println(arg, "is string")
case float64:
fmt.Println(arg, "is float64")
case bool:
fmt.Println(arg, " is bool")
default:
fmt.Println("未知的類型")
}
}
}
func main() {
/*輸出結果:
1 is int
test is string
1.5 is float64
false is bool
-1.5 is float64
*/
MyPrintf(1, "test", 1.5, false, -1.5)
}
