1. 負の数
  2. 0円
  3. 1円
  4. 999円
  5. 1000円
  6. 9999円
  7. 10000円
コース一覧
Go入門
Goのif

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のif

丸括弧は書かない

Go

if stock > 0 { return "販売中" }

条件を丸括弧で囲みません。書いてもエラーにはなりませんが、Go のコードでは書かないのが決まりです。

波括弧のほうは省略できません。1行でも必ず要ります。

Go

if stock > 0 return "販売中" // エラー if stock > 0 { return "販売中" } // これならよい

省略できると、後から行を足したときに「波括弧を書き忘れて1行しか条件に入らない」という事故が起きます。Go はその可能性ごと消しています。

波括弧の位置も決まっている

Go

if stock > 0 { // 同じ行に置く if stock > 0 { // エラーになる

改行して置くとエラーです。Go が行末で文の終わりを補うため、if stock > 0 で文が終わったと解釈されてしまいます。

書き方が1つしかないので、書式で議論になりません。これは Go が意図して選んだ性質です。

条件は bool だけ

第2章でも触れましたが、条件に置けるのは bool だけです。

Go

if stock { // エラー if stock > 0 { // これならよい

0 を偽として扱う機能はありません。何と比べているのかが必ずコードに書いてあるので、読むときに迷いません。

条件の前に文を置ける

Go の if には、他ではあまり見ない書き方があります。

Go

if fee := price / 10; fee > 100 { return "手数料が高めです" }

セミコロンの前が先に実行する文、後ろが条件です。ここで作った fee は、この if の中だけで使えます。

Go

if fee := price / 10; fee > 100 { // fee はここで使える } // ここでは使えない

変数の寿命を短くできるのが利点です。関数の頭で宣言すると、その後ずっと生き残って、読む人が最後まで気にかけることになります。使う場所の直前で作り、その場で消えるほうが読みやすくなります。

この書き方は、第4章のエラー処理で本領を発揮します。

else if

Go

if status == 0 { return "下書き" } else if status == 1 { return "販売中" }

} と else は同じ行に置きます。ただし条件が3つ以上並ぶなら、次のレッスンでやる switch のほうが読みやすくなります。

要件

  1. 負の数なら 不正 を返す
  2. 0 なら 無料 を返す
  3. 1以上999以下なら お手頃 を返す
  4. 1000以上9999以下なら 標準 を返す
  5. 10000以上なら 高額 を返す

入出力例

priceRange(-1) → "不正" priceRange(0) → "無料" priceRange(1) → "お手頃" priceRange(999) → "お手頃" priceRange(1000) → "標準" priceRange(9999) → "標準" priceRange(10000) → "高額"

ヒント

小さいほうから順に判定すると、`price >= 1 && price <= 999` のような長い条件を書かずに済みます

当てはまったらその場で `return` するので、下の行に来た時点で「それより大きい」ことが確定しています

境界の 999 と 1000、9999 と 10000 を取り違えやすい場所です。`< 1000` と `<= 999` は同じ意味になります

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

関連レッスン

  • forしかない世界

    Go唯一のループであるforの基本形を書き、商品を順に処理できるようになります。

  • forの七変化

    条件だけのfor、無限ループとbreakを書き分け、whileの代わりを作れるようになります。

  • Goのswitch

    breakを書かなくてよいswitchで、商品状態によって表示を分けられるようになります。

  • 定番: FizzBuzz

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

このレッスンに出てくる用語

意味があいまいなまま進んだ語は、ここから読み直せます。

  • 変数データに名前をつけて参照する仕組み
  • 関数処理に名前を付けて再利用できる単位
  • 処理計算や代入を表す長方形
main.go
学習モード
エディタを読み込んでいます

メモ

Goのif

⌘S で保存