📜  Go 中的可变参数函数

📅  最后修改于: 2021-10-24 13:06:02             🧑  作者: Mango

使用不同数量的参数调用的函数称为可变参数函数。或者换句话说,允许用户在可变参数函数传递零个或多个参数。 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函数:

  • 当您想在函数传递切片时使用可变函数函数。
  • 可变参数函数是用来当我们不知道的参数的数量。
  • 当您在程序中使用可变参数函数时,它会增加程序的可读性。