MENU

【3分で理解する】golangのfor rangeの使い方 foreachの代替記法

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

今回はgolangのfor rangeを用いたループ処理について解説していきます。

目次

for rangeとは

Goではrangeを使うことで配列、スライス、mapなど様々なデータ構造から値を繰り返しながら取得することができます。

他のプログラミング言語ではforeach文を使うことで実現できますが、Goではfor rangeを使います。

それではデータ構造ごとにどのように値を取り出すのか見ていきましょう。

rangeで配列から値を取り出す

まずは配列から値をループしながら取得する方法についてです。

下記コードのように要素数3のstring型の配列aを宣言します。このaから要素の値を繰り返しながら取得します。

func main() {
	a := [3]string{"x", "y", "z"}
	for i, v := range a {
		fmt.Println(i, v)
	}
}

変数iにはインデックス、変数vには配列aの値がセットされます。

実行結果は0 x 1 y 2 zとなります。

ちなみにインデックスを取得しなくてもいい場合はアンダースコア_を書くことで省略することができます。

func main() {
	a := [3]string{"x", "y", "z"}
	for _, list := range a {
		fmt.Println(list)
	}
}

インデックスを取得しなかった、この実行結果はx y zとなります。

rangeでスライスから値を取り出す

次にスライスから値を取り出す方法です。

基本的には配列時から値を取り出す方法となります。

func main() {
	a := []string{"x", "y", "z"}
	for i, list := range a {
		fmt.Println(i, list)
	}
}

実行結果は0 x 1 y 2 zとなります。配列から要素数を取り除いたものがスライスなので当然といえば当然ですね。

こちらも配列同様にインデックスを省略して要素を取得することができます。

func main() {
	a := []string{"x", "y", "z"}
	for _, list := range a {
		fmt.Println(list)
	}
}

もちろんこの実行結果もx y zとなります。

スライスについては以下の記事で詳細を解説しているので、理解を深めたい方はこちらの記事も参照してみてください。

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

rangeでmapから値を取り出す

最後にmapから要素を取り出す方法についてです。

keyがstring、valueがint型のmapを用意しました。

func main() {
	a := map[string]int{"x": 1, "y": 2, "z": 3}
	for k, v := range a {
		fmt.Println(k, v)
	}
}

これについてもrangeを使うことでkeyとvalue両方を取り出すことができます。

このコードの実行結果はx 1 y 2 z 3となりました。

mapの取得では気を付けなければいけない点があります。実はmapのイテレーションは取得順序が決まっていないということです。

さきほどはたまたまx 1 y 2 z 3と順序通りに取得できましたが、何回か実行しているとz 3 x 1 y 2y 2 z 3 x 1と取得されることがあります。

mapをfor rangeで取得する場合は順序に依存した処理にしないよう注意が必要となります。

mapについては以下の記事で詳細を解説しているので、理解を深めたい方はこちらの記事も参照してみてください。

あわせて読みたい
【3分で理解する】golangのmapとは 使い方、注意点について解説 今回はgolangにおけるmapについて解説していきます。 【mapとは】 golangのmapはキーと値を保持するために使う、データ構造の一つとなっています。 mapの定義は以下のよ...

golangをもっと詳しくなりたい方に

golang学習のために筆者が実際に受講したUdemy教材をまとめています。

あわせて読みたい
【入門】golangの学習におすすめのUdemy教材5選 これから業務でgolangを使うことになった方、これからgolangを使ってキャリアを歩んでいきたいという方でどのように学習していこうか悩んでいる方もいるかと思います。 ...

golang学習のために筆者が実際に読んでおすすめしたい本をまとめています。

あわせて読みたい
【入門】golangの学習におすすめの本/書籍7選 これから業務でgolangを使うことになった方、これからgolangを使ってキャリアを歩んでいきたいという方でどのように学習していこうか悩んでいる方もいるかと思います。 ...
タメになったらシェアお願いします!
  • URLをコピーしました!
  • URLをコピーしました!
目次