Go言語(golang)の条件文
for文の使い方を説明します。Tour of Goを参考にしています。
forを使うと処理をLOOPできます。
Go言語(golang)のfor文
基本的に、 for
ループはセミコロン ;
で3つの部分に分かれています:
- 初期化ステートメント: 最初のイテレーション(繰り返し)の前に初期化が実行されます
- 条件式: イテレーション毎に評価されます
- 後処理ステートメント: イテレーション毎の最後に実行されます
初期化ステートメントは、短い変数宣言によく利用します。その変数は for
ステートメントのスコープ内でのみ有効です。
ループは、条件式の評価が false
となった場合にイテレーションを停止します。
基本的なfor
ループ
この例では、i
が0から4まで増加する間にループが実行されます。
package main
import "fmt"
func main() {
for i := 0; i < 5; i++ {
fmt.Println(i)
}
}
結果
0
1
2
3
4
for
を使った無限ループ
この例では、無限ループ
の文字が無限に表示され続けます。
package main
import "fmt"
func main() {
for {
fmt.Println("無限ループ")
}
}
結果
無限ループ
無限ループ
無限ループ
無限ループ
無限ループ
・
・
・
break
文を使うとループを抜けられます。
package main
import "fmt"
func main() {
for {
fmt.Println("無限ループ")
break
}
}
結果
無限ループ
range
を使用したスライスやマップのイテレーション
この例では、配列を順番に処理します。
package main
import "fmt"
func main() {
numbers := []int{1, 2, 3, 4, 5}
for index, value := range numbers {
fmt.Printf("Index: %d, Value: %d\n", index, value)
}
}
結果
Index: 0, Value: 1
Index: 1, Value: 2
Index: 2, Value: 3
Index: 3, Value: 4
Index: 4, Value: 5
for
文の条件のみを使ったループ
package main
import "fmt"
func main() {
sum := 0
for sum < 10 {
sum += 2
fmt.Println(sum)
}
}
結果
2
4
6
8
10
- この例では、
sum
が10未満の間、ループが継続します。
これらは基本的なfor
ループの例ですが、Golangでは他にもbreak
、continue
、goto
などのステートメントを使用してループの動作を制御できます。
break
ステートメント
break
ステートメントは、ループやswitch
ステートメントを中断し、それを含む最も内側のブロックから抜け出します。
package main
import "fmt"
func main() {
for i := 0; i < 5; i++ {
if i == 3 {
break
}
fmt.Println(i)
}
}
結果
0
1
2
continue
ステートメント
continue
ステートメントは、現在のループイテレーションを終了し、次のイテレーションを開始します。
package main
import "fmt"
func main() {
for i := 0; i < 5; i++ {
if i == 2 {
continue
}
fmt.Println(i)
}
}
結果
0
1
3
4
i
が2のとき、continue
が実行され、そのイテレーションは終了して次のイテレーションが始まります。
goto
ステートメント
goto
ステートメントは、指定されたラベルへの無条件のジャンプを行います。ただし、goto
は避けるべきであり、コードの可読性を低下させる可能性があるため、注意が必要です。
package main
import "fmt"
func main() {
for i := 0; i < 5; i++ {
if i == 3 {
goto EndLoop
}
fmt.Println(i)
}
EndLoop:
fmt.Println("Loop ended.")
}
結果
0
1
2
Loop ended.
i
が3になると、goto EndLoop
が実行されて、ループから抜け出します。EndLoop
ラベルにジャンプし、”Loop ended.”が表示されます。