目次
for文とは?
for文は、繰り返し処理を実行するための構文です。
Go言語は他言語とは異なり、繰り返し処理のための構文としてfor文のみが用意されているため、for文の中でも様々なバリエーションがあります。
Go言語におけるfor文の種類
Go言語には4つの主要なforループの形式があります。
for文の種類
- 標準形式のfor文
- 条件のみのfor文
- 無限ループ
- for-rangeループ
それぞれの形式を詳しく見ていきましょう。
①標準形式のfor文
初期化式、条件式、後処理式の3つの部分から構成されます。
「標準形式」の構成
- 初期化式
- ループが始まる前に、一つあるいは複数の変数の値を設定
- 条件式
- 各繰り返しの前に評価され、真の場合にループが継続します
- 後処理式
- 各繰り返しの最後に実行されます
■形式
for 初期化式; 条件式; 後処理式 {
// 繰り返し実行するコード
}
■具体例
// 0から4までの数字を出力する
for i := 0; i < 5; i++ {
fmt.Println(i)
}
- 初期化式
i := 0
でカウンター変数を初期化 - 条件式
i < 5
が真の間、ループが継続 - 各繰り返しの後に後処理式
i++
で変数をインクリメント
②条件のみのfor文
Go言語では、初期化式と後処理式を省略して、条件式だけを使ったwhileループのような形も使えます。
■形式
for 条件式 {
// 繰り返し実行するコード
}
■具体例
sum := 1
for sum < 100 {
sum += sum
fmt.Println("現在の合計:", sum)
}
この例では、sumが100未満の間、sumを倍にし続けています。
③無限ループ
すべての式を省略すると、無限ループになります。意図的に無限ループを作成する場合に便利です。
■形式
for {
// 無限に繰り返されるコード
// 通常はbreakなどで抜け出す条件が必要
}
■具体例
// 強制的に終了するまでHelloを表示し続けます
for {
fmt.Println("Hello")
}
break
無限ループから抜け出すには、break
を使用します。
x := 1
for {
x += 1
if x == 2 {
break // xの値が2になったら無限ループから抜け出す
}
}
continue
現在のループ処理を終了して、次のループを開始する場合はcontinue
を使用します。
x := 1
for {
x += 1
if x == 2 {
continue // xの値が2になったらログ出力せずに、次のループを開始する。
}
fmt.Println(x)
}
④for-rangeループ
コレクション(配列、スライス、マップ、文字列など)の各要素に対して、繰り返し処理を行うためのfor文です。
■形式
for インデックス, 値 := range コレクション {
// 処理
}
■具体例(スライス)
// スライスに対するfor-range
fruits := []string{"リンゴ", "バナナ", "オレンジ", "ぶどう"}
for i, fruit := range fruits {
fmt.Printf("インデックス %d: %s\n", i, fruit)
}
【出力結果】
インデックス 0: リンゴ
インデックス 1: バナナ
インデックス 2: オレンジ
インデックス 3: ぶどう
■具体例(マップ)
// マップに対するfor-range
scores := map[string]int{
"Alice": 90,
"Bob": 85,
"Carol": 95,
}
for name, score := range scores {
fmt.Printf("%s: %d点\n", name, score)
}
【出力結果】
Alice: 90点
Bob: 85点
Carol: 95点
■具体例(文字列)
// 文字列に対するfor-range(UTF-8対応)
message := "こんにちは、世界!"
for i, char := range message {
fmt.Printf("位置 %d: '%c'\n", i, char)
}
【出力結果】
位置 0: ‘こ’
位置 3: ‘ん’
位置 6: ‘に’
位置 9: ‘ち’
位置 12: ‘は’
位置 15: ‘、’
位置 18: ‘世’
位置 21: ‘界’
位置 24: ‘!’
コメント