PR

Go言語(Golang)の条件分岐の使い分け方まとめ

基礎

こんにちは。Tomoyuki(@tomoyuki65)です。

Go言語(Golang)にはif文などの条件分岐がいくつかありますが、この記事ではそれらの分岐処理の使い分け方についてまとめておきます。

 

Go言語(Golang)の条件分岐の使い分け方まとめ

Go言語(Golang)の条件分岐には主にif文とswitch文の2種類がありますが、それぞれの使い方については以下の通りです。

 

if文

・書き方

// if文のみ
if 条件式 {
  // 処理
}

// 他の条件もある場合
if 条件式 {
  // 処理
} else if 他の条件 {
  // 処理
} else {
  // 全て偽の場合の処理
}

// 初期化付きのif文(エラー処理などで使う)
if err := f(); err != nil {
  // 処理
}

 

・こういう時に使う

・条件が1〜2個など少ない場合
・true/falseのようなシンプルな判定の場合
・複雑な論理式(&&、||)を使う場合
・エラー処理

 

・コード例

// 年齢から成人かどうかを判定
age := 20
if age >= 18 {
  fmt.Println("成人です。")
}

// 点数から評価を判定
score := 75
if score >= 90 {
  fmt.Println("評価: A")
} else if score >= 70 {
  fmt.Println("評価: B")
} else {
  fmt.Println("評価: C")
}

// 文字列から数値に変換(import "strconv"を使う)
if num, err := strconv.Atoi("100"); err != nil {
  fmt.Printf("変換エラー: %v", err)
} else {
  fmt.Printf("数値: %d\n", num)
}

 

switch文

・書き方

// 変数の値で分岐させたい場合
switch 変数 {
  case 値1:
    // 変数の値が「値1」の場合の処理
  case 値2:
    // 変数の値が「値2」の場合の処理
  default:
    // どれにも一致しなかった場合の処理
}

// 条件によって分岐させたい場合
switch {
  case 条件1:
    // 条件1に合致した場合の処理
  case 条件2:
    // 条件2に合致した場合の処理
  default:
    // どれにも一致しなかった場合の処理
}

// 変数の型によって分岐させたい場合
var i interface{} = "hello"
switch v := i.(type) {
  case int:
    // 変数の型がint型の場合の処理
  case string:
    // 変数の型がstring型の場合の処理
  default:
    // どれにも一致しなかった場合の処理
}

※Go言語によるswitch文では、最初にマッチしたcaseの処理だけ実行されます。

 

・こういう時に使う

・値によって分岐させたい場合
・条件が3個以上で可読性を重視してすっきり書きたい場合
・型によって分岐させたい場合(型アサーションのパターン)

 

・コード例

// 果物の種類を判定
fruit := "apple"
switch fruit {
  case "apple":
    fmt.Println("りんごです")
  case "banana":
    fmt.Println("バナナです")
  default:
    fmt.Println("どの果物でもありません。")
}

// 数値によって処理を分岐させたい場合
num := 15
switch {
  case num < 10:
    fmt.Println("数値は10未満です。")
  case num >= 10 && num < 20:
    fmt.Println("数値は10以上20未満です。")
  case num >= 20 && num < 30:
    fmt.Println("数値は20以上30未満です。")
  default:
    fmt.Println("数値は30より大きいです。")
}

// 変数の型によって分岐させたい場合
var i interface{} = "hello"
switch v := i.(type) {
  case int:
    fmt.Printf("数値:%d\n", v)
  case string:
    fmt.Printf("文字列:%s\n", v)
  default:
    fmt.Println("対象外の値:", v)
}

 

最適な条件分岐の選び方

1. 条件が1〜2個で少ないか、複雑な論理式を使う場合

→ 通常のif文

 

2. エラー処理をすっきり書きたい場合

→ 初期化付きのif文

 

3. 値によって分岐させたい場合

→ switch 変数 {}

 

4. 条件が3個以上で可読性を重視してすっきり書きたい場合

→ switch {}

 

5. 型によって分岐させたい場合(型アサーションのパターン)

→ switch v := i.(type) {}

 

スポンサーリンク

最後に

今回はGo言語(Golang)による条件分岐の使い分け方についてまとめました。

基本的にはif文を使っておけば可読性もわかりやすくていいですが、必要に応じてswitch文を使った方が最適な場面もあるため、使い分けれるようにパターンは覚えた方がいいでしょう。

条件分岐の使い分けに迷った際は、ぜひこの記事を参考にしてみて下さい。

 

この記事を書いた人
Tomoyuki

SE→ブロガーを経て、現在はWeb系エンジニアをしています!

Tomoyukiをフォローする
基礎
スポンサーリンク
Tomoyukiをフォローする

コメント

タイトルとURLをコピーしました