コース一覧
    Go基礎:制御構文
    定番: FizzBuzz

    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分

    定番: FizzBuzz

    言語を覚えたら書く定番

    FizzBuzz は、新しい言語を触ったときに最初に書かれることの多い練習問題です。

    プレーンテキスト

    1から順に数える
    3で割り切れたら Fizz
    5で割り切れたら Buzz
    両方で割り切れたら FizzBuzz
    それ以外は数字そのまま

    プレーンテキスト

    1 2 Fizz 4 Buzz Fizz 7 8 Fizz Buzz 11 Fizz 13 14 FizzBuzz

    短いのに、ループ・条件分岐・剰余・文字列の組み立てが全部入ります。ここまでの第3章の総まとめとして、ちょうどよい形をしています。

    剰余は %

    割った余りを求める記号です。

    Go

    9 % 3   // 0。割り切れる
    10 % 3  // 1

    「割り切れる」は「余りが0」と同じことなので、こう書きます。

    Go

    if n % 3 == 0 {
    	// 3で割り切れる
    }

    判定の順番が肝心

    ここが FizzBuzz の唯一の罠です。15 は 3 でも 5 でも割り切れます。

    Go

    if n % 3 == 0 {
    	return "Fizz"      // 15 がここで確定してしまう
    }
    if n % 5 == 0 {
    	return "Buzz"
    }

    この順番だと、15 は Fizz を返して終わります。FizzBuzz にたどり着きません。

    両方の条件を先に書くのが正解です。

    Go

    if n % 3 == 0 && n % 5 == 0 {
    	return "FizzBuzz"
    }

    && は「かつ」です。両方が真のときだけ真になります。

    条件が重なるときは、狭いほうから先に書く。これは FizzBuzz に限らず、条件分岐を書くときの一般的な順序です。

    15で割ってもよい

    3 と 5 の両方で割り切れる数は、15 で割り切れる数と同じです。

    Go

    if n % 15 == 0 {
    	return "FizzBuzz"
    }

    短く書けますが、なぜ 15 なのかが読んだ人に伝わりにくくなります。n % 3 == 0 && n % 5 == 0 のほうが意図がそのまま読めます。短さと分かりやすさが食い違う、小さな例です。

    要件

    1. 3でも5でも割り切れる数は FizzBuzz
    2. 3で割り切れる数は Fizz
    3. 5で割り切れる数は Buzz
    4. それ以外は数字そのまま
    5. 区切りは半角スペース1つ。最後にスペースを付けない
    6. n が0以下なら空文字を返す

    ヒント

    初期コードは末尾にスペースが残る形になっています。行の後ろではなく**前**にスペースを足すと直ります

    `if i%3 == 0 && i%5 == 0 {` を一番先に書いてください。後回しにすると 15 が Fizz になります

    `n` が0以下ならループが1度も回らないので、`result` は空文字のままです。特別扱いは要りません

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

    関連レッスン

    • ループで集計

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

    • つくる: 商品集計

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

    • 第3章クイズ

      if、for、switch、集計についての理解を確認します。

    • funcで関数を作る

      引数と戻り値に型を書いて関数を定義し、手数料の計算を切り出せるようになります。

    main.go
    エディタを読み込んでいます

    メモ

    定番: FizzBuzz

    ⌘S で保存