今回はgolangにおける可変長引数について解説していきます。
目次
可変長引数とは
可変長引数はその名の通り、引数の数を可変に定義することができます。
例えば以下のようなコードの場合、x()関数はint型の2つの引数を渡す必要があるため、x(1, 2, 3)と書いたらエラーになります。
func x(a, b int) {
}
func main() {
x(1, 2)
x(1, 2, 3)
}
これを可変長引数を使い、引数の数の制限を取っ払うことができます。
以下のコードのように引数の型指定の前に「…」をつけることで可変長引数にすることができます。
func x(...int) {
}
func main() {
x(1, 2)
x(1, 2, 3)
}
可変長引数の使いどころ
可変長引数を使うタイミングとして最も多いのはスライスの要素を関数に引数で渡したいときです。
スライスは以前解説しましたが、長さが可変であるためデータによってはその長さが異なり、要素数も変わってきます。
例えば以下のようにスライスaは現在は長さ3ですが、処理によってはこれが増えたり減ったりする可能性があります。
func x(params ...int) {
for _, param := range params {
fmt.Println(param)
}
}
func main() {
a := []int{1, 2, 3}
x(a...)
}
こういったものに対応すべく可変長引数を使うことがあるので抑えておきましょう。
golangをもっと詳しくなりたい方に
golang学習のために筆者が実際に受講したUdemy教材をまとめています。
【入門】golangの学習におすすめのUdemy教材5選
これから業務でgolangを使うことになった方、これからgolangを使ってキャリアを歩んでいきたいという方でどのように学習していこうか悩んでいる方もいるかと思います。 ...
golang学習のために筆者が実際に読んでおすすめしたい本をまとめています。
【入門】golangの学習におすすめの本/書籍7選
これから業務でgolangを使うことになった方、これからgolangを使ってキャリアを歩んでいきたいという方でどのように学習していこうか悩んでいる方もいるかと思います。 ...