技術向上

プログラミングの学び、気になるテクノロジーやビジネストレンドを発信

可変長引数【Go】

定義の際には引数の数を決めずに、
実行時に委ねる方法です。型の前に「...」を記述します。

func p(params ...int) {
    fmt.Println(params)
}

func main() {
    p(1, 2, 3)    // [1 2 3]
}

可変長引数は、関数の内部でスライスとして扱われます。
ですので、実行時に引数を渡さない場合は、空のスライスで実行されます。

また、次の様にfor文を用いて展開することも可能です。

func p(params ...int) {
    for _, param := range params{    // indexは使用しないため破棄
        fmt.Println(param)
    }
}

func main() {
    p(1, 2, 3)
}


引数にスライスを使用することもできます。
その際には、実行時に変数またはスライスの直後に「...」を記述します。
要素を展開する、という意味です。

func main() {
    p([]int{4, 5, 6, 7}...)
}