1. 販売中の商品
  2. 下書きの商品
  3. 売切れで手数料が切り捨てになる商品
  4. 定義されていない状態
コース一覧
Go入門
つくる: 商品データ表示

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分

つくる: 商品データ表示

型を選ぶ練習

第2章で出てきたものを全部使います。新しい知識はありません。

プレーンテキスト

var と := 宣言の書き分け ゼロ値 初期化しない変数の値 基本の型 int / float64 / string / bool 明示的な変換 float64() と int() const と iota 変わらない値と連番

作るのは、商品1件を表す表示行です。

プレーンテキスト

[販売中] きのこ図鑑 1200円 (手数料120円)

型の選び方を先に決める

コードを書く前に、何をどの型で持つかを決めます。ここを決めずに書き始めると、途中で型が合わなくなります。

プレーンテキスト

商品名 string 価格 int 円なので整数。float64 にしない 状態 int iota で作った定数 手数料率 float64 0.1 のような小数 手数料 int 円に戻す

価格を float64 にしないのは、第2章でやったとおりです。小数には誤差があり、お金の計算に向きません。円は割り切れる単位なので int で足ります。

手数料の計算

型をまたぐのはここだけです。

Go

fee := int(float64(price) * FeeRate)

int の価格を float64 にして掛け、int に戻します。小数は切り捨てです。

状態の表示

状態は数字で持ち、表示するときに日本語へ直します。前のレッスンで書いた switch と同じ形です。

プレーンテキスト

0 → [下書き] 1 → [販売中] 2 → [売切れ]

角括弧も含めて組み立てます。

順番に作る

プレーンテキスト

1. [販売中] だけ返す 2. 商品名と価格を足す 3. 手数料を計算して足す 4. 状態を3種類に対応させる

段ごとにテストを流してください。まとめて書いてから直すより早く終わります。

要件

  1. 手数料率を const FeeRate = 0.1 として定義する
  2. 状態を iota で定義した定数と switch で日本語にする
  3. 手数料は int(float64(price) * FeeRate) で計算する
  4. [状態] 商品名 価格円 (手数料N円) の形を返す
  5. 定義されていない状態には [不明] を使う

入出力例

itemDisplay("きのこ図鑑", 1200, 1) → "[販売中] きのこ図鑑 1200円 (手数料120円)" itemDisplay("中古スマホ", 24800, 0) → "[下書き] 中古スマホ 24800円 (手数料2480円)" itemDisplay("古い辞書", 999, 2) → "[売切れ] 古い辞書 999円 (手数料99円)" itemDisplay("謎の箱", 500, 7) → "[不明] 謎の箱 500円 (手数料50円)"

ヒント

状態を日本語にする部分は別の関数に切り出すと読みやすくなります。`statusOf` のような名前で作ってください

手数料は `int(float64(price) * FeeRate)` です。float64 にしてから掛け、int に戻します

型紙は `"[%s] %s %d円 (手数料%d円)"` です。角括弧の後ろと開き括弧の前に半角スペースが1つずつ入ります

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

関連レッスン

  • 第2章クイズ

    var と :=、ゼロ値、基本型、暗黙変換なし、定数についての理解を確認します。

  • Goのif

    括弧の要らないifと、条件の前に文を置けるifを書けるようになります。

  • funcで関数を作る

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

  • 配列

    長さが型の一部である配列を知り、固定長の並びを扱えるようになります。

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

メモ

つくる: 商品データ表示

⌘S で保存