在 Golang 中,可以使用可变参数列表调用的函数称为可变参数函数。可以在可变参数函数传递零个或多个参数。如果函数定义的最后一个参数以省略号 … 为前缀,则该函数可以接受该参数的任意数量的参数。
可变参数函数的语法:
func f(elem ...Type)
这里...
运算符告诉 Golang 程序将 Type 的所有参数存储在 elem 参数中。之后,Go 创建一个 []Type 类型的 elem 变量。因此,所有传递的值都存储在作为切片的 elem 参数中。切片也可以传入参数而不是参数列表,因为 finally函数正在将它们转换为切片。
有关更多信息,您可以参考 Golang 中的 Variadic 函数
使用可变参数函数的优点:
- 在函数传递切片非常简单。
- 当参数数量未知时很有用。
- 增加程序的可读性。
让我们看一些使用带有可变参数列表的函数的例子:
示例 1:
// Go program that uses a function
// with variable argument list
package main
// Importing required packages
import (
"fmt"
)
// Variadic function to return
// the sum of the numbers
func add(num ...int) int {
sum := 0
for j := range num {
sum += j
}
return sum
}
func main() {
fmt.Println("Sum =", add(1, 2, 3, 4, 5, 7, 8, 6, 5, 4))
}
输出:
Sum = 45
示例 2:切片也可以用作参数列表。
// Go program that uses a function
// with variable argument list
// Using a slice as the argument list
package main
// importing required modules
import (
"fmt"
)
// Function to check if an element
// is present in the list or not
func check(x int, v ...int) {
flag := false
index := 0
for i, j := range v {
if j == x {
flag = true
index = i
}
}
if flag {
fmt.Println("Element ", x, " found at index:", index)
} else {
fmt.Println("Element not present in the list")
}
}
func main() {
el := []int{1, 1, 2, 3, 4, 5, 6, 7, 8, 9}
check(1, el...)
check(10, el...)
}
输出:
Element 1 found at index: 1
Element not present in the list