コース一覧
    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しかない世界

    ループは1種類だけ

    他の言語には、繰り返しの書き方がいくつもあります。

    プレーンテキスト

    for / while / do-while / foreach / repeat-until

    Go にあるのは for だけです。while も do-while もありません。

    減らしたのは、書き方が増えるほど「どれを使うべきか」で迷い、読む人も切り替えが要るからです。1つに絞れば、繰り返しを見たときに必ず for を探せば済みます。

    基本の形

    Go

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

    セミコロンで区切られた3つの部分があります。

    プレーンテキスト

    i := 0    最初に1回だけ実行する
    i < 3     毎回ここを見て、真なら続ける
    i++       1周が終わるたびに実行する

    動く順番はこうなります。

    プレーンテキスト

    i := 0 → 条件を見る → 中身 → i++ → 条件を見る → 中身 → i++ → ...

    条件が偽になった時点で、中身を実行せずに抜けます。

    i++ は文であって式ではない

    細かいところですが、Go の i++ は値を持ちません。

    Go

    j := i++      // エラー
    fmt.Println(i++)  // エラー

    他の言語では i++ が値を返すため、a[i++] のような書き方ができます。短く書ける一方で、増える前の値なのか後の値なのかが読み取りにくくなります。Go はその書き方をできなくしています。

    -- も同じです。そして ++i という前置きの形はありません。

    商品を順に処理する

    Go

    prices := []int{1200, 24800, 999}
    
    for i := 0; i < len(prices); i++ {
    	fmt.Println(prices[i])
    }

    len() は長さを返す組み込みの関数です。並びの最後まで回すときによく出てきます。

    添字は 0 から始まるので、条件は i < len(...) です。i <= len(...) と書くと最後に1回はみ出して、実行時に止まります。

    プレーンテキスト

    panic: runtime error: index out of range [3] with length 3

    panic は、実行中に続けられなくなったときに Go が出すものです。第5章の range を使うと、この間違いごと避けられます。

    要件

    1. 番号は1から始める
    2. N. 商品名 の形で1行ずつ並べる
    3. 行の区切りは \n。最後に余分な改行を付けない
    4. 商品が1件も無いときは空文字を返す

    ヒント

    添字の `i` は 0 から始まるので、表示する番号は `i+1` になります

    最後に余分な改行を付けないコツは、行の後ろではなく**前**に改行を足すことです。`if i > 0 { result += "\n" }` と書けます

    文字列は `+=` で足していけます。`result := ""` から始めてください

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

    関連レッスン

    • forの七変化

      条件だけのfor、無限ループとbreakを書き分け、whileの代わりを作れるようになります。

    • Goのswitch

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

    • 定番: FizzBuzz

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

    • ループで集計

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

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

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

    • ループ繰り返し処理。矢印で戻すか専用記号で示す
    • 処理計算や代入を表す長方形
    • 関数処理に名前を付けて再利用できる単位
    main.go
    エディタを読み込んでいます

    メモ

    forしかない世界

    ⌘S で保存