6.3 传递变长参数
...小于 1 分钟
6.3 传递变长参数
若函数最后一个参数为...type
的形式,那么函数可以处理变长参数,长度可以为0,这样的函数被称为变参函数。
相同参数类型
当变长参数类型相同时,可以:
- 直接传入多个参数:
f(p1, p2, p3)
- 参数放在切片中,以
slice...
的形式传入
例:TODO: 06_3_varnumpar.go
func varnumpar() {
x := min(1, 2, 3, 0)
fmt.Println(x) // 0
s := []int{5, 3, 4, 1}
x = min(s...)
fmt.Println(x) // 1
}
func min(s ...int) int {
if len(s) == 0 {
return 0
}
min := s[0]
for _, v := range s {
if v < min {
min = v
}
}
return min
}
不同参数类型
两种方式:
使用
struct
:type Options struct { param1 type1, param2 type2, ... }
使用空接口 若边长参数类型没有指定,可以使用空接口
interface{}
来接收任意类型的参数。 然后在函数内部通过switch
对每个参数进行判断func typecheck(..,..,values … interface{}) { for _, value := range values { switch v := value.(type) { case int: … case float: … case string: … case bool: … default: … } } }
Powered by Waline v2.15.2