【Go言語】for文の種類(標準形式・条件式のみ・無限ループ・for-range)と具体例|初心者向け解説

目次

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: ‘!’

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次