1. 小さくて軽い
  2. 小さいが重い
  3. 中くらい
  4. 大きい
  5. 知らない大きさ
コース一覧
Go入門
Goのswitch

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分

Goのswitch

break を書かなくてよい

Go

switch status { case 0: return "下書き" case 1: return "販売中" case 2: return "売切れ" }

他の言語の switch は、case の最後に break を書かないと次の case に落ちてしまいます。書き忘れが定番のバグでした。

Go は逆にしています。当たった case を実行したら、そこで抜けます。break は要りません。

default

どの case にも当たらなかったときは default です。

Go

switch status { case 0: return "下書き" default: return "不明" }

複数の値をまとめる

カンマで並べると、1つの case にまとめられます。

Go

switch status { case 0, 3: return "未公開" case 1: return "販売中" }

他の言語で case 0: と case 3: を続けて書いていたのが、この形になります。

条件を書く switch

Go の switch には、値ではなく条件を並べる書き方があります。

Go

switch { case price < 1000: return "お手頃" case price < 10000: return "標準" default: return "高額" }

switch の後ろに何も書かず、case に条件を並べます。上から順に見て、最初に真になったものを実行します。

前のレッスンで if と else if を並べた価格帯の判定は、この形で書き直せます。縦に揃うぶん、条件が3つ以上あるときはこちらのほうが読みやすくなります。

どちらを使うか

プレーンテキスト

1つの値を何かと比べる switch status { 条件が3つ以上並ぶ switch { 条件が1つか2つ if で足りる

迷ったら if から書き始めて、3つ目が出てきた時点で switch に直す、という順番で構いません。

要件

  1. "small" は重さで分ける。1000g 未満なら ネコポス、1000g 以上なら 宅配便
  2. "medium" と "large" は重さによらず 宅配便。カンマで1つの case にまとめる
  3. そのどれでもない大きさは 取扱不可

入出力例

shippingOf("small", 500) → "ネコポス" shippingOf("small", 1000) → "宅配便" shippingOf("medium", 100) → "宅配便" shippingOf("large", 5000) → "宅配便" shippingOf("huge", 100) → "取扱不可"

ヒント

`switch size {` で大きさを分け、`case "small":` の中で重さを `if` で判定します

`case "medium", "large":` とカンマで並べると、2つを1つの case にまとめられます

1000g ちょうどは「1000g 以上」なので宅配便です。`< 1000` と書けば境界を間違えません

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

関連レッスン

  • 定番: FizzBuzz

    判定とループを組み合わせ、Go版のFizzBuzzを自力で書けるようになります。

  • ループで集計

    繰り返しの中で値を累積し、出品価格の合計と平均を計算できるようになります。

  • つくる: 商品集計

    第3章の知識を統合し、売切れを除いた条件付き集計を書けるようになります。

  • 第3章クイズ

    if、for、switch、集計についての理解を確認します。

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

メモ

Goのswitch

⌘S で保存