Golang 变量函数

Golang 变量函数

用不同的参数数调用的函数被称为变量函数。 fmt.Printf 是一个变量函数的例子,它在开始时需要一个固定的参数,之后可以接受任何数量的参数。

要点: 在变量函数的声明中,最后一个参数的类型前面有一个省略号,即( ... )。它表示该函数可以在任何数量的该类型的参数下被调用。

语法

function function_name(para1, para2...type)type {// code...}
  • 在函数内部……类型的行为就像一个片断。例如,假设我们有一个函数签名,即add( b…int)int,现在参数在函数内部是[]int类型。
  • 你也可以在一个变量函数中传递一个现有的slice。要做到这一点,我们将完整数组的一个片断传递给函数,如下面例2所示。
  • 当你在variadic函数中没有传递任何参数时,那么函数中的片断就是空的。
  • variadic函数一般用于执行字符串格式化的函数。
  • 你也可以在variadic函数中传递多个片断。
  • 你不能使用变量参数作为返回值,但你可以把它作为一个片断返回。

例1 :

// Go program to illustrate the
// concept of variadic function
package main
 
import (
    "fmt"
    "strings"
)
 
// Variadic function to join strings
func joinstr(elements ...string) string {
    return strings.Join(elements, "-")
}
 
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"))
 
}

输出

GEEK-GFG
Geeks-for-Geeks
G-E-E-k-S

注意: 输出的第一行是空的,因为在程序中我们首先在没有任何参数的情况下调用了我们的函数 joinstr(即零参数情况),由于这个原因,它返回一个空字符串。

例2 :

// Go program to illustrate the
// concept of variadic function
package main
 
import (
    "fmt"
    "strings"
)
 
// Variadic function to join strings
func joinstr(elements ...string) string {
    return strings.Join(elements, "-")
}
 
func main() {
    // pass a slice in variadic function
    elements := []string{"geeks", "FOR", "geeks"}
    fmt.Println(joinstr(elements...))
}

输出

geeks-FOR-geeks

当我们使用一个Variadic函数时

  • Variadic函数可以用来代替向一个函数传递分片。
  • 当我们不知道参数的数量时,就可以使用变量函数。
  • 当你在程序中使用variadic函数时,会增加程序的可读性。
  • 当你的函数的参数很可能不是来自一个单一的数据结构(如切片或数组等)时,变量函数就特别有用。
    • 在这种情况下,使用变量函数可以避免创建一个数据结构来直接传递参数给函数。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程