コース一覧
    Go基礎:制御構文
    forの七変化

    Go基礎:制御構文

    Goの分岐、反復、関数、エラー処理を体系的に学ぶ基礎コースです。

    1
    制御構文(forしかない世界)
    01. Goのif15分
    02. forしかない世界15分
    03. forの七変化15分
    04. Goのswitch15分
    05. 定番: FizzBuzz15分
    06. ループで集計15分
    07. つくる: 商品集計20分
    08. 第3章クイズ10分
    2
    関数とエラー処理
    01. funcで関数を作る15分
    02. 複数戻り値(Goならでは)15分
    03. if err != nil(Goの心臓)15分
    04. エラーを作る15分
    05. deferで後始末15分
    06. つくる: 検証つき関数群20分
    07. 第4章クイズ10分

    forの七変化

    3つの部分は省略できる

    for が1種類しかないのに困らないのは、3つの部分をそれぞれ省略できるからです。省略すると、他の言語のループそっくりの形になります。

    条件だけ残すと while になる

    Go

    for stock > 0 {
    	stock--
    }

    初期化と後処理を消して条件だけ残した形です。他の言語の while (stock > 0) と同じ動きになります。セミコロンも要りません。

    Go に while という単語が無いのは、この形で足りるからです。

    全部消すと無限ループになる

    Go

    for {
    	// ずっと続く
    }

    条件が無いので、自分で止めない限り終わりません。止めるには break を使います。

    Go

    count := 0
    for {
    	count++
    	if count >= 3 {
    		break
    	}
    }

    「回数は決まっていないが、ある条件が来たら抜けたい」ときの形です。入力を受け付け続けるサーバーや、条件が満たされるまで再試行する処理でよく出てきます。

    break と continue

    プレーンテキスト

    break     ループを抜ける
    continue  今回の残りを飛ばして、次の周へ進む

    continue は、条件に合わないものを飛ばすときに使います。

    Go

    for i := 0; i < len(prices); i++ {
    	if prices[i] == 0 {
    		continue   // 0円は数えない
    	}
    	total += prices[i]
    }

    if で囲んでも同じことは書けますが、除外したい条件を先に書いて弾くほうが、本筋の処理が右に寄らずに済みます。条件が増えるほど差が出ます。

    無限ループの注意

    for {} の中で break を書き忘れると、プログラムは止まりません。このコースの採点は30秒で打ち切られるので、タイムアウトとして落ちます。

    プレーンテキスト

    Execution timed out (30 seconds limit)

    この表示が出たら、まず無限ループを疑ってください。条件が一度も真にならない、あるいは変数が変化していない、のどちらかであることがほとんどです。

    要件

    1. N人に配ってM個余ります の形を返す
    2. 条件だけを残した for で、引き算を繰り返して求める
    3. 配布数が0以下のときは 配布数が不正です を返す
    4. 在庫が配布数に満たないときは 0人に配ってN個余ります を返す

    ヒント

    最初に `if per <= 0 {` で弾いてください。ここを書かないと `for stock >= per` が永久に終わりません

    ループの中では在庫を減らし、人数を増やします。`stock -= per` と `people++` の2行です

    ループを抜けた時点の `stock` が、そのまま余りになります

    生田 陸人
    監修生田 陸人
    ゆめさくエンジニア / 現役ソフトウェアエンジニア監修者プロフィールを見る →
    編集 ゆめさく編集部·公開 2026/08/10

    関連レッスン

    • Goのswitch

      breakを書かなくてよいswitchで、商品状態によって表示を分けられるようになります。

    • 定番: FizzBuzz

      判定とループを組み合わせ、Go版のFizzBuzzを自力で書けるようになります。

    • ループで集計

      繰り返しの中で値を累積し、出品価格の合計と平均を計算できるようになります。

    • つくる: 商品集計

      第3章の知識を統合し、売切れを除いた条件付き集計を書けるようになります。

    このレッスンに出てくる用語

    意味があいまいなまま進んだ語は、ここから読み直せます。

    • ループ繰り返し処理。矢印で戻すか専用記号で示す
    • 処理計算や代入を表す長方形
    • サーバークライアント(ブラウザなど)がリクエストを送り、サーバーがレスポンスを返す。
    • 変数データに名前をつけて参照する仕組み
    main.go
    エディタを読み込んでいます

    メモ

    forの七変化

    ⌘S で保存