首先来看如何定义一个不定参数的函数:
func YourFun(v... interface{}){}
...interface{}
B、“…”
上面我们看到有三个点”…”的特殊标记。那么这三个点”…”有啥作用呢?
2.1 不定参数
如上所述,在定义不定参数时,表示从该参数开始记录不定参数
2.2 解引用slice
当要传递若干个值到不定参数函数中得时候,可以手动书写每个参数,也可以将一个slice传递给该函数:
YourFunc (YourSlice...)
...
这里要注意的是,解引用slice目前只能在不定参数函数传递参数时使用,在其他地方使用会报错。
C、遍历参数
下面我们来看一个实例:
func P (v... string) {for _,item := range v { fmt.Println("item:",item) }}func main() { var l []string l = append(l,"a") l = append(l,"b") fmt.Println("l is ",l) P(l...)}
这里我们看到的结果是,首先一个完整的list,然后是每个元素:
l is [a b]item: aitem: b
for...range