可変長引数【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}...) }