【Go言語】forによるループ処理|while文やforEach文のような処理の実装方法も解説
Go言語での繰り返し処理について詳しく解説します。繰り返し処理はプログラミングの基本中の基本ですが、Go言語ではいくつか独自の書き方があります。
3行で要約すると
- Go言語には繰り返し処理は
for
ループしかない。 - Go言語のforループは柔軟で、変数操作や条件指定の他に、
while
風の条件式指定やrange
を用いた要素処理も可能で、ループ制御も可能。 - Go言語の
for
ループはシンプルかつ多機能で、効果的な繰り返し処理を提供します。
基本的なforループ
Go言語のfor
ループはこのような形です。
for 初期化ステートメント; 条件式; 後処理 {
// 処理
}
インクリメントの自由度
後処理でi++
の代わりにi += 2
やi--
なども使えます。
for i := 0; i < 10; i += 2 {
fmt.Println(i) // 0, 2, 4, 6, 8
}
複数の変数でループ
複数の変数でループも可能です。
for i, j := 0, 10; i < j; i++, j-- {
fmt.Println(i, j)
}
条件式だけを指定する: while文のような使い方
for
ループで条件式だけを指定すると、while
文のように振る舞います。
count := 0
for count < 5 {
fmt.Println(count)
count++
}
配列やスライスを繰り返す: forEach的な使い方
range
を使えば、配列やスライス、マップの各要素を簡単に処理できます。
numbers := []int{0, 1, 2, 3, 4}
for i, num := range numbers {
fmt.Printf("index: %d, value: %d\n", i, num)
}
値だけ取得する
for _, num := range numbers {
fmt.Println("value:", num)
}
インデックスだけ取得する
for i := range numbers {
fmt.Println("index:", i)
}
breakとcontinueで制御
break
でループを抜け、continue
で次のループに進みます。
for i := 0; i < 10; i++ {
if i == 5 {
break
}
if i%2 == 0 {
continue
}
fmt.Println(i)
}
ラベルを用いた複数のループ制御
break
やcontinue
にラベルをつけることで、複数のネストされたループを一度に制御できます。
OuterLoop:
for i := 0; i < 3; i++ {
for j := 0; j < 3; j++ {
if i == 1 && j == 1 {
break OuterLoop
}
fmt.Println(i, j)
}
}
無限ループ
特定の条件下で必要な場合以外、無限ループは避けましょう。
for {
// 無限ループ
}
まとめ
Go言語での繰り返し処理は非常に柔軟です。シンプルだけど多機能、それがGo言語のfor
ループです。