“ 本文来源于《The Go Programming Language》”
5.7. 可变参数
参数数量可变的函数称为为可变参数函数。典型的例子就是fmt.Printf和类似函数。Printf首先接收一个的必备参数,之后接收任意个数的后续参数。
在声明可变参数函数时,需要在参数列表的最后一个参数类型之前加上省略符号“...”,这表示该函数会接收任意数量的该类型参数。
gopl.io/ch5/sum
func sum(vals...
sum函数返回任意个int型参数的和。在函数体中,vals被看作是类型为[] int的切片。sum可以接收任意数量的int型参数:
// "0"
在上面的代码中,调用者隐式的创建一个数组,并将原始参数复制到数组中,再把数组的一个切片作为参数传给被调函数。如果原始参数已经是切片类型,我们该如何传递给sum?只需在最后一个参数后加上省略符。下面的代码功能与上个例子中最后一条语句相同。
int{
虽然在可变参数函数内部,...int 型参数的行为看起来很像切片类型,但实际上,可变参数函数和以切片作为参数的函数是不同的。
func f(...
可变参数函数经常被用于格式化字符串。下面的errorf函数构造了一个以行号开头的,经过格式化的错误信息。函数名的后缀f是一种通用的命名规范,代表该可变参数函数可以接收Printf风格的格式化字符串。
func errorf(linenum
interfac{}表示函数的最后一个参数可以接收任意类型,我们会在第7章详细介绍。
![2ac7d0719b30ae578299865f8f4ca658.png](https://img-blog.csdnimg.cn/img_convert/2ac7d0719b30ae578299865f8f4ca658.png)
![27129809bae220309ab0c4e31f2bbcb5.png](https://img-blog.csdnimg.cn/img_convert/27129809bae220309ab0c4e31f2bbcb5.png)
好文点赞收藏