1. 販売中の商品
  2. 売切れの商品
  3. 手数料率が違う商品
コース一覧
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分

基本の型

4つ覚えれば足りる

fleama の商品データを表すのに使う型は、ほとんどこの4つです。

プレーンテキスト

int 整数 在庫数、商品ID float64 小数 手数料率、平均価格 string 文字 商品名、説明文 bool 真か偽か 売切れかどうか

int は整数

Go

stock := 3 price := 1200

小数点以下を持ちません。割り算をすると切り捨てになります。

Go

7 / 2 // 3 になる。3.5 ではない

ここは意識しておく価値があります。合計を件数で割って平均を出すとき、int のままだと小数が消えます。

float64 は小数

Go

rate := 0.1 average := 1250.5

名前の 64 は、値を記録するのに使うビット数です。float32 もありますが、特別な理由がなければ float64 を使います。Go で小数といえば float64 だと思ってかまいません。

小数には誤差が付きものです。

Go

x := 0.1 y := 0.2 x + y // 0.30000000000000004

バグではなく、小数を2進数で表すときに必ず起きるずれです。お金の計算を float64 でやらないのは、このためです。fleama でも価格は int の「円」で持ちます。

string は文字

Go

name := "きのこ図鑑"

ダブルクォートで囲みます。シングルクォートは別の意味になるので使えません。

つなげるのは + です。

Go

"きのこ" + "図鑑" // きのこ図鑑

bool は真か偽か

Go

soldOut := false

true と false の2つだけです。0 や空文字を偽として扱う機能はありません。

Go

if stock { // エラー。int は条件にできない if stock > 0 { // これならよい

他の言語から来ると引っかかる場所です。Go では条件に置けるのは bool だけ、と覚えてください。曖昧さが無いぶん、読むときに迷いません。

要件

  1. 商品名 在庫N 手数料R 販売中 の形を返す
  2. 売切れフラグが true のときは、最後を 売切れ にする
  3. 手数料率の埋め込みには %v を使う

入出力例

describeStock("きのこ図鑑", 3, 0.1, false) → "きのこ図鑑 在庫3 手数料0.1 販売中" describeStock("きのこ図鑑", 0, 0.1, true) → "きのこ図鑑 在庫0 手数料0.1 売切れ" describeStock("中古スマホ", 2, 0.05, false) → "中古スマホ 在庫2 手数料0.05 販売中"

ヒント

先に `status := "販売中"` と置き、`if soldOut {` の中で `売切れ` に入れ替えると素直に書けます

`if soldOut {` と書けます。`soldOut == true` と書かなくても、bool はそのまま条件にできます

型紙は `"%s 在庫%d 手数料%v %s"` です。在庫と手数料の直後にスペースは入りません

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

関連レッスン

  • 暗黙変換なし

    intとfloat64をそのまま足せない理由を知り、明示的な型変換を書けるようになります。

  • 定数とiota

    constで変わらない値を定義し、iotaで連番の状態を作れるようになります。

  • つくる: 商品データ表示

    第2章の知識で商品3件を型付きで持ち、整形して表示できるようになります。

  • 第2章クイズ

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

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

メモ

基本の型

⌘S で保存