定義の際には引数の数を決めずに、
実行時に委ねる方法です。型の前に「...」を記述します。
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}...)
}