用不同数量的参数调用的函数称为可变参数函数。换句话说,允许用户在可变函数中传递零个或多个参数。fmt.Printf是可变参数函数的示例,它在开始时需要一个固定的参数,之后它可以接受任意数量的参数。
重要事项:
在可变参数函数的声明中,最后一个参数的类型前面带有省略号,即(…)。它表明该函数可以调用任意数量的这种类型的参数
语法:
function function_name(para1, para2...type)type{ // code... }
函数function …type的的行为类似于切片(slice)。例如,假设我们有一个函数签名,即add(b…int)int,现在是type [] int的参数。
您还可以在可变参数函数中传递现有切片。为此,我们将完整数组的一部分传递给函数,如下面的示例2所示。
当您在可变参数函数中不传递任何参数时,函数内部的默认为nil。
可变参数函数通常用于字符串格式化。
您还可以在可变参数函数中传递多个切片。
您不能将可变参数用作返回值,但可以将其作为切片返回。
零个参数和多个参数演示示例:
package main import ( "fmt" "strings" ) //可变参数函数联接字符串 func joinstr(element ...string) string { return strings.Join(element, "-") } func main() { //零参数 fmt.Println(joinstr()) //多个参数 fmt.Println(joinstr("GEEK", "GFG")) fmt.Println(joinstr("Geeks", "for", "Geeks")) fmt.Println(joinstr("G", "E", "E", "k", "S")) }
输出:
GEEK-GFG Geeks-for-Geeks G-E-E-k-S
范例2,可变参数函数联接字符串,在可变函数中传递一个切片:
package main import( "fmt" "strings" ) //可变参数函数联接字符串 func joinstr(element...string)string{ return strings.Join(element, "-") } func main() { //在可变函数中传递一个切片 element:= []string{"geeks", "FOR", "geeks"} fmt.Println(joinstr(element...)) }
输出:
geeks-FOR-geeks
当我们使用可变参数函数时:
当您要在函数中传递切片时,使用可变参数函数。
当我们不知道参数的数量时,使用可变参数函数。
在程序中使用可变参数函数时,它可以增加程序的可读性。