在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
变参函数: 函数中形式参数的数目通常是确定的,在调用的时候要依次传入与形式参数对应的所有实际参数,但是在某些函数的参数个数可以根据实际需要来确定,这就是变参函数。 Go语言支持不定长变参,但是要注意不定长参数只能作为函数的最后一个参数,不能放在其他参数的前面。函数的声明如下: Func functionName(variableArgumentName ... dateType) 返回值{ Body } 不定长变参的实质就是一个切片,可以使用range遍历,例如: Func f(args ...int){ For _,arg :=range args{ fmt.Println(arg) } }
我们熟知的fmt.Print()函数可以传递不同类型的参数,go语言规定,如果希望传递任意类型的变参,变参类型应该制定为空接口类型:interface{}.例如: Func f(args ... Interface{}){ ... }
Go语言中,空接口可以指向任何数据对象,所以可以使用interface{}定义任意类型变量,同时interface{}也是类型安全的。 例: package main import ( "fmt" ) func main() { f(2, "Go", 8, "language", 'a', false, 'A', 3.14) } func f(args ...interface{}) { var num = make([]int, 0, 6) var str = make([]string, 0, 6) var ch = make([]int32, 0, 6) var other = make([]interface{}, 0, 6)
for _, arg := range args { switch v := arg.(type) { case int: num = append(num, v) case string: str = append(str, v) case int32: ch = append(ch, v) default: other = append(other, v) } } fmt.Println(num) fmt.Println(str) fmt.Println(ch) fmt.Println(other) } 输出: [2 8] [Go language] [97 65] [false 3.14] 变参函数难度不大,多理解理解,跟着写写,然后自己尝试些几个变参函数就可以了 |
请发表评论