##はじめに
可変長引数を使った関数について、備忘録を兼ねて記載しておく
##概要
Goでは、「...」を使うことで
・関数の定義に可変長引数を使うこと
・その関数にスライスを渡すこと が可能
##可変長引数を使って任意個数の引数をとる関数を定義する
型の前に「...」を記載した(変数名 ...型
)を引数の定義を使うことで、
任意の個数の引数をとる関数を定義することができる。
sample.go
func sample(s string, i ...int){
//処理(もちろん、iはスライスなので、rangeを使うことも可能)
}
func main(){
sample("Hello", 1, 2, 3, 4)
}
つまり、関数定義で使う「...」には、渡ってきた可変長引数の値を 変数名x([]T型)のスライスにまとめる効果がある。
#####制約事項
可変長引数は、「引数の末尾に1つだけ」定義することができる。
→ 可変長引数は、最後に1つだけしか書けない
##スライスを可変長引数として渡す
変数名の後に「...」を記載した(変数名...
)を使って、スライスを可変長引数にして渡すことが可能
sample.go
func sample(s string, i ...int){
//処理(もちろん、iはスライスなので、rangeを使うことも可能)
}
func main(){
sl := []int{1, 2, 3, 4}
sample("Hello", sl...)
}
つまり、引数のスライスに「...」を使うと、スライスを可変長引数に展開する効果がある
##まとめ
型の前に「...」を記載した(変数名 ...型
) には、可変長引数をスライスにまとめる
変数名の後に「...」を記載した(変数名...
) には、スライスを可変長引数に展開する
効果がある
##参照
- 翔泳社 スターティングGo言語 https://www.shoeisha.co.jp/book/detail/9784798142418