1. 販売中
  2. 売切れ
  3. 下書き
  4. 知らない状態
  5. 空文字
コース一覧
Go道場 fleamaをGoで作り直す10問
問4 商品状態で出し分けろ

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分

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

初段 / 目安 20分

「商品状態ごとの表示文言、Node版は if 連打でした」

凛さんは少しだけ嫌そうな顔をしました。「Go の switch で綺麗に。break は……書かなくていいんですよ、Go では」

多くの言語の switch は、break を書き忘れると次の case へ流れ落ちます。これをフォールスルーと呼び、長らくバグの温床でした。

Go の switch は逆です。既定でフォールスルーしません。 一致した case だけを実行して抜けます。

Go

switch status { case "on_sale": return "販売中" case "sold": return "売切れ" default: return "不明な状態" }

break を書く必要がないので、書き忘れる事故も起きません。事故が1種類、この世から消えたわけです。

もう1つ、状態を表す文字列を直接書き散らさないでください。定数にまとめます。

Go

const ( StatusOnSale = "on_sale" StatusSold = "sold" )

こうしておくと、綴りを間違えたときにコンパイラが気付きます。"on_sail" と書いても、文字列のままでは誰も止めてくれません。

完成条件

商品状態を受け取り、表示文言を返す関数 describeStatus を作ってください。

状態返す文言
on_sale販売中
sold売切れ
draft下書き
それ以外不明な状態

状態の文字列は const でまとめてから使ってください。判定は switch で書きます。

要件

  1. 状態の文字列を const でまとめて定義する
  2. 判定は switch で書き、default で未知の状態を受け止める
  3. 空文字が来たときも 不明な状態 を返す

入出力例

describeStatus("on_sale") → "販売中" describeStatus("sold") → "売切れ" describeStatus("draft") → "下書き" describeStatus("reserved") → "不明な状態" describeStatus("") → "不明な状態"

ヒント

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

まず `const ( ... )` で3つの状態を定義します

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

関連レッスン

  • 問5 スライスを育てよ

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

  • 問6 マップで在庫台帳

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

  • 問7 Itemに魂を込めよ

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

  • 問8 3本同時に走らせろ

    3カテゴリの集計を goroutine で同時に走らせ、チャネルで回収します。

main.go
学習モード
エディタを読み込んでいます

メモ

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

⌘S で保存