Go Academy · レッスン

if文と初期化式

任意の初期化文を伴う条件分岐

レッスン 1/412 ステップ

「if文と初期化式」はCoddyKit上の無料Go Academyレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはGo Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Go Academyコースには全4レッスンが含まれています。

Goのif

Goのif文はブール式を評価します。括弧は不要ですが、波括弧は必須です。

if x > 0 {
    // positive
}

elseとelse if

else ifで条件を連結し、elseでそれ以外の場合を処理します。

func classify(n int) string {
    if n < 0 {
        return "negative"
    } else if n == 0 {
        return "zero"
    } else {
        return "positive"
    }
}

初期化文付きのif

Goでは、条件の前に任意の初期化文を置けます。一時的な変数のスコープを限定するのに最適です。

if err := doSomething(); err != nil {
    // err is only in scope here
    return err
}

初期化文によるスコープ

初期化文で宣言した変数のスコープは、if/elseブロック内に限定されます。これにより、変数が周囲の関数に漏れ出すのを防げます。

func process(id int) error {
    if val, err := lookup(id); err != nil {
        return err
    } else {
        use(val) // val is in scope here
    }
    return nil
}

ブール式

Goの条件にはboolが必要で、暗黙的な変換は行われません。

  • 有効:if count != 0
  • 無効:if count — CやJavaScriptとは異なり、Goではコンパイルエラーになります
  • これにより、よくあるオフバイワンエラーやnil参照のバグを防げます

nilチェック

== nilを使って、nilポインター、スライス、マップ、エラーをチェックします。

func greet(name *string) string {
    if name == nil {
        return "Hello, stranger"
    }
    return "Hello, " + *name
}

早期リターンパターン

Goでは、ネストを減らすために早期リターンが強く推奨されます(「ハッピーパス」を左端のインデントに保てます)。

func save(user User) error {
    if user.Name == "" {
        return errors.New("name required")
    }
    if user.Age < 0 {
        return errors.New("invalid age")
    }
    return db.Insert(user)
}

条件の組み合わせ

&&と||を使って条件を組み合わせます。短絡評価が適用されるため、右辺は必要な場合にのみ評価されます。

if user != nil && user.IsActive() {
    sendEmail(user)
}

ifとswitchの使い分け

同じ変数に対して多くの条件を調べる場合は、通常switchのほうが読みやすくなります。次のような場合はifを使用します。

  • 条件が独立したブール式である
  • エラーチェックを伴う初期化文が必要である
  • 分岐が1~2個しかない

if-elseのピラミッドを避ける

深くネストしたif-elseブロックは、コードを読みにくくします。次の方法で改善してください。

  • 早期リターンを使う
  • 複数のケースにはswitch文を使う
  • ロジックを小さな関数に分割する
  • 関数の先頭にガード節を置く

クイックチェック

Cと比較したとき、Goのif文にはどのような特徴がありますか?

まとめ:if文

Goのif文は強力で簡潔です。

  • 条件を括弧で囲みません。波括弧は必須です
  • 初期化文の変数はif/elseブロック内だけで有効です
  • 条件は厳密にboolでなければなりません
  • 深いネストよりも早期リターンを優先します
  • 短絡評価を伴う&&/||を使用します

次は、汎用的なGoのforループです。

無料で開始

AI チューターと学ぶ Go — 無料

ブラウザでリアルコードを書いて実行し、24/7 の AI チューターから瞬時にサポートを受け、ウェブまたはアプリで続きから学習できます。

コース
51
レッスン
203

よくある質問

「if文と初期化式」レッスンは無料ですか?

はい。「if文と初期化式」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Go Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Go Academyコースには全4レッスンが含まれています。

「if文と初期化式」で何を学びますか?

任意の初期化文を伴う条件分岐 ブラウザで直接実行するハンズオンコードでGo Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Go Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのGo Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。

「if文と初期化式」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このGo Academyレッスンでコードを書いて実行できますか?

はい。すべてのGo Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. if文と初期化式
  2. forループ:すべてのパターン
  3. Goのswitch文
  4. break、continue、ラベル
← Go Academyに戻る