Golang 菜鸟教程

Golang 控制语句

Golang 函数 & 方法

Golang 结构体

Golang 切片 & 数组

Golang 字符串(String)

Golang 指针

Golang 接口

Golang 并发

Golang 异常(Error)

Golang 其他杂项

Go 语言变参函数

用不同数量的参数调用的函数称为可变参数函数。换句话说,允许用户在可变函数中传递零个或多个参数。fmt.Printf是可变参数函数的示例,它在开始时需要一个固定的参数,之后它可以接受任意数量的参数。

重要事项:

  • 在可变参数函数的声明中,最后一个参数的类型前面带有省略号,即()。它表明该函数可以调用任意数量的这种类型的参数

    语法:

    function function_name(para1, para2...type)type{
        // code...
    }
  • 函数function …type的行为类似于切片(slice)。例如,假设我们有一个函数签名,即add(b…int)int,现在是type [] int的参数。

  • 您还可以在可变参数函数中传递现有切片。为此,我们将完整数组的一部分传递给函数,如下面的示例2所示。

  • 当您在可变参数函数中不传递任何参数时,函数内部的默认为nil。

  • 可变参数函数通常用于字符串格式化。

  • 您还可以在可变参数函数中传递多个切片。

  • 您不能将可变参数用作返回值,但可以将其作为切片返回。

零个参数和多个参数演示示例:

package main

import (
    "fmt"
    "strings"
)

//可变参数函数联接字符串
func joinstr(element ...string) string {
    return strings.Join(element, "-")
}

func main() {

    //零参数
    fmt.Println(joinstr())

    //多个参数
    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

范例2,可变参数函数联接字符串,在可变函数中传递一个切片:

package main 
  
import( 
    "fmt"
    "strings"
) 
  
//可变参数函数联接字符串
func joinstr(element...string)string{ 
    return strings.Join(element, "-") 
} 
  
func main() { 
     
   //在可变函数中传递一个切片
   element:= []string{"geeks", "FOR", "geeks"} 
   fmt.Println(joinstr(element...)) 
}

输出:

geeks-FOR-geeks

当我们使用可变参数函数时:

  • 当您要在函数中传递切片时,使用可变参数函数。

  • 当我们不知道参数的数量时,使用可变参数函数。

  • 在程序中使用可变参数函数时,它可以增加程序的可读性。