メインコンテンツにスキップ
モジュール 2 · レッスン 2 / 5コース内の 7/50~10 min
モジュールのレッスン (2/5)

for: 唯一のループ

Go には 単一ループ構造: for があります。いいえ while、いいえ do-while、いいえ foreach (次のレッスンで説明されます) range)。 3 つの形式により、1 つのキーワードですべてのケースをカバーできます。

for の 3 つの形式

古典的な 3 節形式

C/Java と同じ:

Go
for i := 0; i < 5; i++ {
    fmt.Println(i)
}

i のスコープは for に制限されています。 3 つの句はオプションです (次のように指定できます)。 いずれかを省略します)。ただし、中間のものを省略すると、; が残ります。

「while」形式: 条件のみ

Go では、 while は単一の bool 式を含む単純な for です。

Go
i := 0
for i < 5 {
    fmt.Println(i)
    i++
}

無限の形

句がないと、ループは終了しません (break/return を除く)。

Go
for {
    if exitCondition() {
        break
    }
    doWork()
}

これは、イベント処理ループ、サーバー、再試行ポリシーのパターンです。

break、continue およびラベル

break は最も内側のループを終了し、continue は次の反復にスキップします。

Go
for i := 0; i < 10; i++ {
    if i%2 == 0 {
        continue       // salta i pari
    }
    if i > 7 {
        break          // ferma il ciclo
    }
    fmt.Println(i)     // 1 3 5 7
}

ネストされたループを終了するには、ラベルがあります (まれですが便利です)。

Go
Esterno:
for i := 0; i < 3; i++ {
    for j := 0; j < 3; j++ {
        if i*j == 4 {
            break Esterno   // esce da entrambi
        }
    }
}

C のような , 演算子はありません

Go では for i, j := 0, 10; i < j; i, j = i+1, j-1 を記述することはできません。 後置式は複数の代入を受け入れません。 Go を使用する 複数の代入構文:

Go
for i, j := 0, 10; i < j; i, j = i+1, j-1 {
    fmt.Println(i, j)
}

i, j = i+1, j-1 は単一であるため、これは代わりに 機能します 複数の割り当て。

試してみてください

運動#go.m2.l2.e1
試行回数: 0読み込み中…

0 から 4 までの数値を古典的な 3 句の for を使用して出力します。

エディターを読み込み中…
ヒントを表示

`初期化の場合;条件; post { ... }` — ここでの init は `i := 0` です。

3 回の試行後に解決策が利用可能になります

運動#go.m2.l2.e2
試行回数: 0読み込み中…

for の 'while' 形式を使用して、1 から 10 までのすべての数値を合計します。

エディターを読み込み中…
ヒントを表示

「while」形式: `for &lt;条件&gt; { ... }`。

3 回の試行後に解決策が利用可能になります

Quiz#go.m2.l2.e3
準備完了

Go の無限ループを表す形式はどれですか?

Go
// (a) for i := 0; i < 10; i++ { ... }
// (b) for cond { ... }
// (c) for { ... }
回答の選択肢

要約

  • 3 つの形式 (classic、while、infinite) を持つ単一のキーワード for。
  • break / continue オプションでネストされたループのラベルを付けます。
  • for の前に Name: というラベルを付けます。使用は控えめにします。
  • 演算子として , を使用しません。複数の割り当て i, j = ..., ... を使用します。