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)
}