6.3 传递变长参数

Kesa...小于 1 分钟

6.3 传递变长参数

若函数最后一个参数为...type 的形式,那么函数可以处理变长参数,长度可以为0,这样的函数被称为变参函数

相同参数类型

当变长参数类型相同时,可以:

  • 直接传入多个参数:f(p1, p2, p3)
  • 参数放在切片中,以slice...的形式传入

例:TODO: 06_3_varnumpar.goopen in new window

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