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]
ICP备案:
公安联网备案: