1. 3件の売上
  2. 1件だけ
  3. 0円が混ざっても数え落とさない
  4. 5件
コース一覧
Go道場 fleamaをGoで作り直す10問
問3 forしかない世界で集計せよ

Go道場 fleamaをGoで作り直す10問

Go入門で身に付けた技を、商店街公式フリマアプリ「fleama」の Goリプレイス計画で試す演習専用コースです。解説はありません。依頼と完成条件だけを読み、白紙から自分で組み立てます。手が止まったときのために、方針・使う構文・部分解の3段階のヒントを各問に用意しています。ゼロ値の予言から始まり、error の受け止め方、for だけのループ、switch と定数、スライスとマップ、構造体とメソッド、ゴルーチンでの並行処理、JSON を返すハンドラを経て、最後は一覧・詳細・出品の3エンドポイントを Node版と互換になるよう組み上げるところまで、10問で Go の主要な道具を一巡します。1問15分から45分、全10問で約5時間です。Go入門を終えて「読めるけれど自分では書けない」と感じている方に向いています。

1
Goリプレイス計画
01. 問1 ゼロ値を予言せよ15分
02. 問2 errを無視するな20分
03. 問3 forしかない世界で集計せよ20分
04. 問4 商品状態で出し分けろ20分
05. 問5 スライスを育てよ25分
06. 問6 マップで在庫台帳25分
07. 問7 Itemに魂を込めよ30分
08. 問8 3本同時に走らせろ35分
09. 問9 JSONで応答せよ35分
10. 問10 総合 リプレイス完遂45分

問3 forしかない世界で集計せよ

初段 / 目安 20分

「Node版の while と forEach で書かれた売上集計、Go に移植を」

凛さんはコードを指しながら続けます。「ご存知のとおり、Go のループは for だけです。3つの繰り返しを全部 for で」

Go には while がありません。do-while も、配列の forEach もありません。それでも困らないのは、for が3つの顔を持っているからです。

回数を決めて回すときは、見慣れた形です。

Go

for i := 0; i < 5; i++ { }

条件だけで回すときは、前後を落とします。これが while の代わりです。

Go

for n > 0 { }

中身を順に見るときは range を添えます。添字と値の両方が取れます。

Go

for i, v := range prices { }

添字が要らなければ for _, v := range prices と書きます。逆に値が要らなければ for i := range prices です。

道具が1つしかないと、どれを使うか迷う時間が消えます。

完成条件

売上の配列を受け取り、3種類の繰り返しで集計した結果を返す関数 sumThreeWays を作ってください。

返す形は次のとおりです。3つとも同じ合計になります。

プレーンテキスト

count=13500 while=13500 range=13500
  • count は for i := 0; ... の形で、添字を使って足す
  • while は条件だけの for で、添字を自分で進めながら足す
  • range は for _, v := range の形で足す

0 円が混ざっていても数え落とさないようにしてください。

要件

  1. count は for i := 0; i < len(prices); i++ の形で集計する
  2. while は条件だけの for で、添字を自分で進めながら集計する
  3. range は for _, v := range prices の形で集計する

入出力例

sumThreeWays([4800,6200,2500]) → "count=13500 while=13500 range=13500" sumThreeWays([4800]) → "count=4800 while=4800 range=4800" sumThreeWays([0,2500]) → "count=2500 while=2500 range=2500" sumThreeWays([100,200,300,400,500]) → "count=1500 while=1500 range=1500"

ヒント

前のヒントを開くと次が開きます。開かずに解けると未開封クリアです

1つ目は見慣れた形です。`prices[i]` で値を取り出します

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

関連レッスン

  • 問4 商品状態で出し分けろ

    定数にした商品状態を switch で出し分け、未知の値も取りこぼしません。

  • 問5 スライスを育てよ

    空のスライスから始めて、追加と件数と番号つき一覧を組み立てます。

  • 問6 マップで在庫台帳

    カンマokイディオムで、存在しないカテゴリを聞かれても事故らない台帳にします。

  • 問7 Itemに魂を込めよ

    構造体とメソッド、そして不正な商品を生ませないコンストラクタを書きます。

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

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

  • ループ繰り返し処理。矢印で戻すか専用記号で示す
  • 配列サイズ固定の同型データの集まり
  • 関数処理に名前を付けて再利用できる単位
main.go
学習モード
エディタを読み込んでいます

メモ

問3 forしかない世界で集計せよ

⌘S で保存