go 不定参数

在开发的时候,尤其是在维护旧代码的时候,可能会遇到某个旧的方法可以适用当前问题的情况,但是需要的参数和之前有一点出入,如果重构方法的话,旧的方法又被其他代码调用,改动较大。这个时候就可以考虑使用不定参数(可变参数)。
以下是定义不定参数方法的代码,可以看到参数后面有三个点
func funName(v... interface{}){
}
当要传递若干值到不定参数方法,可以使用两种方法,一种是一个参数一个参数的传递用户按逗号隔开;另一种就是将参数设置成切片 slice 传递。
func test(args... string){
	for _, v  := range args{
			fmt.Println(v)
		}
}

func main(){
	//一个一个参数传递
	test("1","2","3")

	//slice传递, 注意后面也要有三个点
	var tmp []string = []string{"1","2","3"}
	test(tmp...)
}

利用上面讲的不定参数,我们就可以在需要修改的方法内加上不定参数,通过不定参数传递新的参数,而原先调用这个方法的代码也不需要做修改,因为不定参数不是必填的。
当然,如果不嫌麻烦的话,最好写个新方法或者重构代码。

你可能感兴趣的:(Go)