📜  使用带有可变参数列表的 func 的 Golang 程序

📅  最后修改于: 2021-10-25 02:23:29             🧑  作者: Mango

在 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