Go言語における**可変長引数(variadic parameters)**は、関数が「引数の数が決まっていない」状況でも柔軟に対応できるようにする仕組みです。これは、関数に複数の同じ型の引数を渡すときに非常に便利です。
基本構文
可変長引数を使うには、関数定義の中で引数の型の前に ...(三点リーダ)を付けます。
例:整数の合計を求める関数
このように、sum 関数には任意の個数の int 型の引数を渡すことができます。
実体はスライスとして扱われる
関数の中では、可変長引数は**スライス(slice)**として扱われます。たとえば、nums ...int は関数内部では []int として参照できます。
可変長引数と他の引数の併用
可変長引数は、他の通常の引数と一緒に使うこともできます。ただし、可変長引数は必ず引数リストの最後に置く必要があります。
出力:
スライスを渡す場合の展開
可変長引数を受け取る関数にスライスを渡すには、スライスの後に ... を付けて「展開」する必要があります。
注意点
-
可変長引数はゼロ個でも受け取ることができます。したがって、空の状態で呼び出してもエラーになりません。
-
関数が複数の可変長引数を持つことはできません。常に1つだけです。
まとめ
| 特徴 | 説明 |
|---|---|
| 構文 | func f(x ...int) のように書く |
| 実体 | 関数内ではスライスとして扱われる |
| 制限 | 可変長引数は最後に1つだけ指定できる |
| 応用 | スライスの展開には ... が必要 |
Go言語で可変長引数を使うことで、関数の柔軟性が高まり、さまざまなデータに対応した汎用的な関数を作ることができます。
生成日:2025/05/03