Dev Study
Go コース

28. 可変長引数 — ... で個数を自由に

引数の型の前に ... を付けると、その関数は同じ型の引数を何個でも受け取れる可変長引数になります。func sum(nums ...int) のように書くと、呼び出し側は sum(1, 2, 3) のように好きな個数を渡せます。関数の中では nums は []int 型のスライスとして扱えるので、range で回したり len で個数を数えたりできます。

可変長引数は引数リストの最後に一つだけ置けます。すでにスライスを持っていて、その要素を可変長引数として渡したいときは、sum(s...) のように引数の後ろに ... を付けて展開します。これがないと「スライスそのもの」を渡そうとして型が合わずエラーになります。

おなじみの fmt.Println や fmt.Printf も、内部では可変長引数を受け取る関数です。だからこそ任意の個数・型の値を渡せます。自作の関数でも、合計や最大値のように「いくつ来るか分からない値」を扱いたいときに可変長引数が便利です。

▶ サンプルコードを実行してみよう(自由に書き換えてOK)

Go
公式ドキュメントで詳しく ↗