使用不同数量的参数调用的函数称为可变参数函数。或者换句话说,允许用户在可变参数函数传递零个或多个参数。 fmt.Printf是可变参数函数的例子,它在开始时需要一个固定参数,然后它可以接受任意数量的参数。
要点:
- 在可变参数函数的声明中,最后一个参数的类型前面有一个省略号,即 ( … )。它表示可以在任意数量的此类参数处调用该函数。
句法:
function function_name(para1, para2...type)type{
// code...
}
- 在函数内部……type 的行为就像一个切片。例如,假设我们有一个函数签名,即 add(b…int)int,现在是类型为 []int 的 a 参数。
- 您还可以在可变参数函数传递现有切片。为此,我们将完整数组的一部分传递给函数,如下面的示例 2所示。
- 当你不传递任何参数的可变参数函数,然后在函数内部切片为零。
- 可变参数函数通常用于字符串格式化。
- 您还可以在可变参数函数传递多个切片。
- 您不能使用可变参数作为返回值,但可以将其作为切片返回。
示例 1:
C
// Go program to illustrate the
// concept of variadic function
package main
import(
"fmt"
"strings"
)
// Variadic function to join strings
func joinstr(element...string)string{
return strings.Join(element, "-")
}
func main() {
// zero argument
fmt.Println(joinstr())
// multiple arguments
fmt.Println(joinstr("GEEK", "GFG"))
fmt.Println(joinstr("Geeks", "for", "Geeks"))
fmt.Println(joinstr("G", "E", "E", "k", "S"))
}
C
// Go program to illustrate the
// concept of variadic function
package main
import(
"fmt"
"strings"
)
// Variadic function to join strings
func joinstr(element...string)string{
return strings.Join(element, "-")
}
func main() {
// pass a slice in variadic function
element:= []string{"geeks", "FOR", "geeks"}
fmt.Println(joinstr(element...))
}
输出:
GEEK-GFG
Geeks-for-Geeks
G-E-E-k-S
示例 2:
C
// Go program to illustrate the
// concept of variadic function
package main
import(
"fmt"
"strings"
)
// Variadic function to join strings
func joinstr(element...string)string{
return strings.Join(element, "-")
}
func main() {
// pass a slice in variadic function
element:= []string{"geeks", "FOR", "geeks"}
fmt.Println(joinstr(element...))
}
输出:
geeks-FOR-geeks
当我们使用 Variadic函数:
- 当您想在函数传递切片时使用可变函数函数。
- 可变参数函数是用来当我们不知道的参数的数量。
- 当您在程序中使用可变参数函数时,它会增加程序的可读性。