Menu
Coddy logo textTech

`fallthrough` を伴う Switch 文

CoddyのGOジャーニー「論理とフロー」セクションの一部。レッスン 1/68。

Goでは、switch文は通常、一致するcaseだけを実行して自動的に終了します。ただし、fallthroughキーワードを使うとこの動作が変わり、一致するかどうかに関係なく、次のcaseへ実行を続けるよう強制します。

case の末尾で fallthrough を使用すると、Go は条件をチェックせずに次の case のコードを実行します。これは、fallthrough を防ぐために break が必要な C などの言語とは異なります。

grade := "B"
switch grade {
case "A":
    fmt.Println("Excellent!")
    fallthrough
case "B":
    fmt.Println("Good job!")
    fallthrough
case "C":
    fmt.Println("Keep trying!")
}

この例では、grade が "B" の場合、fallthrough ステートメントによって "Good job!" と "Keep trying!" の両方が出力されます。これにより、1つの一致する case に対して、関連する複数のアクションを実行できます。

challenge icon

チャレンジ

簡単

このチャレンジでは、switch statement で fallthrough キーワードを使用して優先度アラートシステムを作成する練習をします。高優先度のアラートがトリガーされたとき、システムは複数の警告メッセージを順番に表示します。

アラートレベルを表す string input を受け取ります。さまざまなアラートレベルを処理し、fallthrough を使用して、より高い優先度のアラートに対して連鎖するメッセージを表示する switch statement を作成してください。

入力は、次のいずれかのアラートレベルになります:"critical""high""medium"、または "low"

switch statement は次のように動作する必要があります:

  • "critical" の場合:"CRITICAL: System shutdown imminent!" を出力し、fall through して high 優先度のメッセージも出力する
  • "high" の場合:"HIGH: Immediate attention required!" を出力し、fall through して medium 優先度のメッセージも出力する
  • "medium" の場合:"MEDIUM: Please review when possible" を出力する
  • "low" の場合:"LOW: Informational only" を出力する

fallthrough キーワードを使用して、critical アラートでは critical と high の両方の優先度メッセージを表示し、high アラートでは high と medium の両方の優先度メッセージを表示するようにしてください。

自分で試してみよう

package main

import "fmt"

func main() {
    // 入力を読み取る
    var alertLevel string
    fmt.Scanln(&alertLevel)
    
    // TODO: 以下にコードを書いてください
    // アラートシステム用のfallthrough付きswitch文を作成する
    
}
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

論理とフローのすべてのレッスン

自分で練習してみよう: Goオンラインコンパイラ