1. 下書き
  2. 販売中
  3. 売切れ
  4. 定義されていない状態
コース一覧
Go入門
定数とiota

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分

定数とiota

変わらない値には const

手数料率のように、プログラムの途中で変わってほしくない値があります。

Go

const FeeRate = 0.1

const で作った値は、後から書き換えられません。

Go

FeeRate = 0.2 // エラー: cannot assign to FeeRate

書き換える気が無いことをコードで宣言できます。読む人は「この値はどこかで変わるかも」と疑わなくて済みます。

var との違い

Go

var rate = 0.1 // 後から変えられる const rate = 0.1 // 変えられない

迷ったら、まず const で書いてみてください。変える必要が出たときにコンパイラが教えてくれます。逆は教えてくれません。

まとめて定義する

Go

const ( FeeRate = 0.1 MaxPrice = 1000000 ServiceName = "fleama" )

設定値をまとめておくと、変更するとき1か所を見れば済みます。

iota で連番を作る

商品の状態のように、種類を表す値を作りたいことがあります。

Go

const ( StatusDraft = 0 StatusOnSale = 1 StatusSoldOut = 2 )

数字を手で書くと、途中に1つ足したときに全部ずれます。これを自動にするのが iota です。

Go

const ( StatusDraft = iota // 0 StatusOnSale // 1 StatusSoldOut // 2 )

iota は const のまとまりの中で 0 から始まり、1行ごとに1ずつ増えます。2行目からは書かなくても続きます。

途中に足しても、番号は自動でずれてくれます。

Go

const ( StatusDraft = iota // 0 StatusReview // 1 ← 足した StatusOnSale // 2 自動でずれる StatusSoldOut // 3 )

数字のままでは読みにくい

iota で作るのは数字なので、そのまま表示しても意味が分かりません。

プレーンテキスト

状態: 2

人が読む形に直す関数を用意するのが定番です。

Go

func statusLabel(status int) string { switch status { case StatusDraft: return "下書き" } ... }

case 0: ではなく case StatusDraft: と書けるのが、定数を用意した効き目です。0 が何を指すのか、読んだ人が調べずに済みます。

要件

  1. const のまとまりの中で iota を使い、StatusDraft・StatusOnSale・StatusSoldOut を定義する
  2. 0 を渡したら 下書き、1 なら 販売中、2 なら 売切れ を返す
  3. それ以外の数値には 不明 を返す
  4. switch の case には数字ではなく定数名を書く

入出力例

statusLabel(0) → "下書き" statusLabel(1) → "販売中" statusLabel(2) → "売切れ" statusLabel(9) → "不明"

ヒント

1つ目に `StatusDraft = iota` と書けば、2つ目と3つ目は名前だけ並べれば続きの番号になります

`switch status {` の中で `case StatusDraft:` のように定数名で書きます。読む人に 0 の意味が伝わります

どの case にも当たらないときの `return "不明"` を最後に残してください

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

関連レッスン

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

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

  • 第2章クイズ

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

  • Goのif

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

  • funcで関数を作る

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

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

メモ

定数とiota

⌘S で保存