ネストされたループ
CoddyのGOジャーニー「基礎」セクションの一部。レッスン 49/109。
Nested Loopsとは、別のloopの内側に配置されたloopです。inner loopはouter loopの各反復ごとに完全に実行されます。
ネストしたループを使って、1~3の数の掛け算表を作成しましょう。
for i := 1; i <= 3; i++ {
for j := 1; j <= 3; j++ {
fmt.Printf("%d×%d=%d\t", i, j, i*j)
}
fmt.Println()
}このコードを実行すると、各 row が outer loop 変数 (i) の1つの値と inner loop 変数 (j) のすべての値を掛け合わせたものを表す乗算表が得られます。出力は画面に次のように表示されます。
1×1=1 1×2=2 1×3=3
2×1=2 2×2=4 2×3=6
3×1=3 3×2=6 3×3=9 これがどのように動作するのかを段階的に理解しましょう:
まず、外側のループが i=1 に設定され、内側のループが完全に実行されます。
i=1, j=1: prints "1×1=1"
i=1, j=2: prints "1×2=2"
i=1, j=3: prints "1×3=3"After inner loop が終了したら、fmt.Println() で新しい行を出力します。
次に outer loop は i=2 に設定され、inner loop が再び実行されます:
i=2, j=1: prints "2×1=2"
i=2, j=2: prints "2×2=4"
i=2, j=3: prints "2×3=6"最後に、outer loop は i=3 に設定され、inner loop はもう一度だけ実行されます。
i=3, j=1: prints "3×1=3"
i=3, j=2: prints "3×2=6"
i=3, j=3: prints "3×3=9"このようなループの中にループを配置するパターンは、データの表を扱ったり、グリッド状の構造を作成したりする際に非常に便利です。
チャレンジ
初心者このチャレンジでは、単純なパターンを出力するために nested loop を使う練習をします。outer loop は rows を iterate し、inner loop は columns を iterate して、小さな文字の grid を作成します。
nested loop を完成させて、asterisks(*)の 3x3 grid を出力してください。各 asterisk の後にはスペースを 1 つ付ける必要があるため、各 row は * * * (末尾にスペースあり)のようになります。期待される出力は次のとおりです。
* * * * * * * * *
自分で試してみよう
package main
import "fmt"
func main() {
// グリッドの行と列の数
rows := 3
columns := 3
// TODO: アスタリスク (*) のグリッドを出力するネストしたループを作成する
// 外側のループは行を反復処理する必要があります
// 内側のループは列を反復処理する必要があります
for i := 0; i < rows; i++ {
// 各列にアスタリスクを出力する内側のループをここに追加してください
// これは各行の後に改行を出力します
fmt.Println()
}
}このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
基礎のすべてのレッスン
自分で練習してみよう: Goオンラインコンパイラ