MENU

【3分で理解する】golangの可変長引数とは 引数の(…)の使い方

本ページではアフィリエイトリンク(PR)が含まれています

今回は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)
}

可変長引数の使いどころ

可変長引数を使うタイミングとして最も多いのはスライスの要素を関数に引数で渡したいときです。

スライスは以前解説しましたが、長さが可変であるためデータによってはその長さが異なり、要素数も変わってきます。

あわせて読みたい
【3分で理解する】golangのスライスとは 使い方、注意点について解説 今回はgolangにおけるスライスについて解説していきます。 【スライスとは】 golangにはSlice(スライス)というデータ構造があり、他の言語でいう配列と似ていますが、微...

例えば以下のようにスライス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を使ってキャリアを歩んでいきたいという方でどのように学習していこうか悩んでいる方もいるかと思います。 ...
タメになったらシェアお願いします!
  • URLをコピーしました!
  • URLをコピーしました!
目次