跳转至

10.可变参数函数

声明

可变参数函数的声明如下:

func f(a1 <type>, an ...<type>){
    <statment>
}

上述代码中,参数an为可变长度参数,其类型是后面所写类型的切片。

传参的展开

如果函数是可变参数,而传入的参数是切片,则可以使用...将切片展开输入。

对于上述示例,即an就是传入的切片。以下是详细代码:

package main

import (
    "fmt"
)

func f(a1 int, an ...string){
    fmt.Println("parameter1 =", a1)
    fmt.Println("parameter2 = ")
    for _, value := range an{
        fmt.Print(value, ";")
    }
}

func main(){
    a1 := 5
    a2 := [...]string{"s1", "s2", "s3", "s4"}
    a3 := a2[1:]
    fmt.Println("a1 =", a1)
    fmt.Println("a2 =", a2)
    fmt.Println("a3 =", a3)
    f(a1, a3...)
}

Note

上述代码同时展示了...的三种用法,分别是:

声明可变长度参数函数;

声明数组时自动判断长度;

展开切片传入函数。