Golang 使用带有变量参数列表
在Golang中,可以用变量参数列表调用函数,这被称为可变函数。可以在变量函数中传递零个或更多个参数。如果函数定义的最后一个参数以省略号…为前缀,则该函数可以接受该参数的任意数量的参数。
可变函数的语法:
func f(elem ...Type)
这里的…运算符告诉Golang程序将Type的所有参数都存储在elem参数中。之后,Go将创建一个类型为[]Type的elem变量。因此,所有传递的值都存储在一个名为elem的参数中,其是一个切片。可以将一个切片传递给参数列表,因为最终函数会将它们转换为切片。
更多信息可见Golang中的可变函数。
使用可变函数的好处:
- 将切片传递给函数非常容易。
- 当参数数量未知时很有用。
- 增加程序的可读性。
我们看一些使用函数和可变参数列表的例子:
示例1:
//使用带有可变参数列表的函数的Go程序
package main
//导入所需的包
import (
"fmt"
)
//可变函数返回数字的和
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程序
//使用切片作为参数列表
package main
//导入所需的包
import (
"fmt"
)
//检查元素是否存在于列表中
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