1. 42件のとき
  2. 0件のとき
  3. 1件のとき
  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分

つくる: 起動バナー

章の知識だけで作る

新しいことは出てきません。第1章で使った fmt.Sprintf と if だけで、fleama-go の起動バナーを組み立てます。

完成すると、こういう表示になります。

プレーンテキスト

=== fleama-go === version 1.0.0 商品 42 件を読み込みました

複数行を1つの文字列にする

画面に3回出力するのではなく、3行分をまとめた1つの文字列を作ります。行の区切りは \n です。

Go

s := "1行目\n2行目"

これを表示すると2行に見えます。文字列の中の \n が「ここで改行」という印だからです。

Sprintf の型紙にもそのまま書けます。

Go

fmt.Sprintf("=== %s ===\nversion %s", name, version)

数によって言葉を変える

最後の行は、読み込んだ件数で表現を変えます。

プレーンテキスト

42 件のとき 商品 42 件を読み込みました 0 件のとき 商品がまだありません

0 のときだけ別の文にするので、if で分けます。第1章の最初にやったことと同じ形です。

Go

if count == 0 { // 別の文を組み立てる }

組み立ての順序

一度に全部書こうとすると、どこが間違っているのか分からなくなります。順番に作ってください。

プレーンテキスト

1. 1行目だけ返す === fleama-go === 2. 2行目を足す \nversion 1.0.0 3. 3行目を足す \n商品 42 件を読み込みました 4. 0 件のときを分ける

各段階でテストを流すと、どこで崩れたかがすぐ分かります。まとめて書いてから直すより速く終わります。

要件

  1. 1行目は === とアプリ名と === を並べた形にする
  2. 2行目は version とバージョンを並べた形にする
  3. 3行目は件数が1以上なら 商品 N 件を読み込みました
  4. 件数が0のときの3行目は 商品がまだありません
  5. 行の区切りは \n。最後に余分な改行を付けない

入出力例

banner("fleama-go", "1.0.0", 42) → "=== fleama-go === version 1.0.0 商品 42 件を読み込みました" banner("fleama-go", "1.0.0", 0) → "=== fleama-go === version 1.0.0 商品がまだありません" banner("fleama-go", "0.9.1", 1) → "=== fleama-go === version 0.9.1 商品 1 件を読み込みました" banner("shop", "2.3.4", 7) → "=== shop === version 2.3.4 商品 7 件を読み込みました"

ヒント

先に1行目と2行目だけを返す形にして、テストを流してみてください。3行目のテストは落ちますが、上2行が合っているかは分かります

文字列は `+` でつなげます。`head + "\n商品がまだありません"` のように書けます

`商品 %d 件` の数字の前後に半角スペースが1つずつ入ります。ここが最も間違えやすい場所です

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

関連レッスン

  • 第1章クイズ

    Goの特徴、go run、package main、fmtの使い分けについての理解を確認します。

  • varで宣言する

    varで型付きの宣言を書き、型が名前の後ろに来るGoの書き方に慣れます。

  • Goのif

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

  • funcで関数を作る

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

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

メモ

つくる: 起動バナー

⌘S で保存