コース一覧
    Go基礎:制御構文
    Goのif

    Go基礎:制御構文

    Goの分岐、反復、関数、エラー処理を体系的に学ぶ基礎コースです。

    1
    制御構文(forしかない世界)
    01. Goのif15分
    02. forしかない世界15分
    03. forの七変化15分
    04. Goのswitch15分
    05. 定番: FizzBuzz15分
    06. ループで集計15分
    07. つくる: 商品集計20分
    08. 第3章クイズ10分
    2
    関数とエラー処理
    01. funcで関数を作る15分
    02. 複数戻り値(Goならでは)15分
    03. if err != nil(Goの心臓)15分
    04. エラーを作る15分
    05. deferで後始末15分
    06. つくる: 検証つき関数群20分
    07. 第4章クイズ10分

    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以上なら 高額 を返す

    ヒント

    小さいほうから順に判定すると、`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 で保存