1. 5まで
  2. 15まで(FizzBuzzが出る)
  3. 1まで
  4. 3まで
  5. 0のとき
コース一覧
Go入門
定番: FizzBuzz

Go入門

変数とゼロ値、Go唯一のループであるfor、複数戻り値とエラー処理、スライスとマップ、構造体とメソッド、ゴルーチンによる並行処理、net/httpによるAPI開発まで、Goの基礎を、毎レッスン実際にコードを書き、フリマアプリのAPIをGoで作りながら学びます。

1
Hello, Go
01. Goとは15分
02. 実行してみる15分
03. packageとmain15分
04. fmtで出力する15分
05. go buildと1バイナリ15分
06. つくる: 起動バナー20分
07. 第1章クイズ10分
2
変数と型
01. varで宣言する15分
02. := の短縮宣言15分
03. ゼロ値(Goならでは)15分
04. 基本の型15分
05. 暗黙変換なし15分
06. 定数とiota15分
07. つくる: 商品データ表示20分
08. 第2章クイズ10分
3
制御構文(forしかない世界)
01. Goのif15分
02. forしかない世界15分
03. forの七変化15分
04. Goのswitch15分
05. 定番: FizzBuzz15分
06. ループで集計15分
07. つくる: 商品集計20分
08. 第3章クイズ10分
4
関数とエラー処理
01. funcで関数を作る15分
02. 複数戻り値(Goならでは)15分
03. if err != nil(Goの心臓)15分
04. エラーを作る15分
05. deferで後始末15分
06. つくる: 検証つき関数群20分
07. 第4章クイズ10分
5
スライスとマップ
01. 配列15分
02. スライス15分
03. appendで育てる15分
04. rangeで走査する15分
05. マップ15分
06. カンマokイディオム15分
07. つくる: 検索と集計20分
08. 第5章クイズ10分
6
構造体とメソッド
01. 構造体15分
02. 初期化とフィールド15分
03. メソッド15分
04. ポインタレシーバ20分
05. New関数の慣習15分
06. 構造体のスライス15分
07. つくる: Itemで再設計20分
08. 第6章クイズ10分
7
ゴルーチンと並行処理のさわり
01. ゴルーチン15分
02. チャネル20分
03. 待ち合わせ20分
04. 並行の落とし穴20分
05. つくる: 並行集計20分
06. 第7章クイズ10分
8
Web API(net/http)
01. サーバーを立てる20分
02. ハンドラ関数20分
03. JSONを返す20分
04. ルーティング20分
05. 一覧API20分
06. 詳細APIと40420分
07. 出品API20分
08. つくる: API主要部完成25分
09. 第8章クイズ10分
9
総合制作
01. 仕様互換を仕上げる25分
02. Node版と差し替える25分
03. 1バイナリでデプロイ25分
04. 自由拡張25分
05. 完成と次のステップ20分

定番: 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以下なら空文字を返す

入出力例

fizzBuzz(5) → "1 2 Fizz 4 Buzz" fizzBuzz(15) → "1 2 Fizz 4 Buzz Fizz 7 8 Fizz Buzz 11 Fizz 13 14 FizzBuzz" fizzBuzz(1) → "1" fizzBuzz(3) → "1 2 Fizz" fizzBuzz(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 で保存