Go并发编程实战
上QQ阅读APP看书,第一时间看更新

3.5 变长函数

前面介绍过的求和sum函数只能处理定义时的2个参数,但是如果要对3个或者更多的参数求和,则无能为力。考虑到Go语言不支持函数重载,因此也不能同时定义两个同名的sum函数来解决这个问题。那么在Go语言中,如何才能达到sum函数既可以接收2个参数又可以接收3个参数呢?

在Go语言中,有一种特殊的函数参数,叫作变长参数,可以处理任意多个参数。借助变长参数,可以让函数的功能更加强大。这个特性和TypeScript语言中的不定参数非常类似。变长参数在定义时需要在数据类型前面用3个点“...”来指定,如变长的整数类型参数为...int。有变长参数的函数也称为变长函数。下面是变长函数的示例程序3-7。

示例程序3-7 变长函数的用法:chapter03\code07\func.go

在示例程序3-7中,第04行定义了一个名为sum的函数。这里需要特别注意一下,sum函数的参数ns是...int 。整数类型(int)前面有3个点,表示参数ns是变长参数,换句话说,该函数可以接收任意数量的整数类型。

第05行定义了一个变量ret并将它赋值为0,于是Go编译器把变量ret认定为整数类型。第06行用到了for循环语句,后续章节会详细介绍这个循环语句,这里只需要了解一下即可。第06~08行实际上就是对传入的参数值进行累加。第09行将累加值返回。第12~15行在调用sum函数时分别传入0个参数、1个参数、2个参数或者3个参数,都可以正常执行。

变长函数在处理不确定数目的参数时是非常有用的。换句话说,如果一个函数需要处理不定数目的参数,就可以使用变长函数。

注意

在Go语言中,变长参数...必须放于函数的末尾,否则会报语法错误。