Go语言可变参数的用法
在实际开发中,我们可能遇到一些大同小异的开发需求,函数为了兼容多种需求可能设置数量不一的参数,所以 Go 语言允许对函数设置可变参数。
可变参数是指不限制参数数量,但限制了参数的数据类型,可变参数使用 3 个点(…)表示,它以切片形式表示,切片元素是参数的数据类型,从原理分析,可变参数利用了切片的解包,可变参数的应用示例如下:
在函数调用过程中,可以根据实际设置参数数量,但每个参数只能设为整型,如果需要设置不同类型的参数,可以将参数的数据类型设为接口(interface)类型,示例如下:
可变参数是指不限制参数数量,但限制了参数的数据类型,可变参数使用 3 个点(…)表示,它以切片形式表示,切片元素是参数的数据类型,从原理分析,可变参数利用了切片的解包,可变参数的应用示例如下:
package main import ( "fmt" ) func myfun(numbers ...int) { for _, k := range numbers { fmt.Printf("参数值为:%v\n", k) } } func main() { // 调用函数 myfun(12, 15, 13) myfun(45, 44, 23, 77) }上述代码运行结果为:
参数值为:12
参数值为:15
参数值为:13
参数值为:45
参数值为:44
参数值为:23
参数值为:77
在函数调用过程中,可以根据实际设置参数数量,但每个参数只能设为整型,如果需要设置不同类型的参数,可以将参数的数据类型设为接口(interface)类型,示例如下:
package main import ( "fmt" ) func myfun(numbers ...interface{}) { for _, k := range numbers { fmt.Printf("参数值为:%v\n", k) } } func main() { var s = []string{"Mary", "Tim"} var m = map[string]interface{}{"name": "Mary", "age": 10} // 调用函数 myfun(45, "Tom", s, m) }上述代码将参数 numbers 设为接口(interface)类型,在调用函数 myfun() 的时候,分别使用整型、字符串、切片和集合类型的数据作为函数参数,运行结果为:
参数值为:45
参数值为:Tom
参数值为:map[age:10 name:May]