Menu
CoddyTech

`fallthrough` を伴う Switch 文

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

Goでは、switch文は通常、一致するcaseだけを実行し、その後自動的に終了します。ただし、fallthroughキーワードを使うと、一致するかどうかにかかわらず、次のcaseへ処理を続けるようにできます。

case の末尾で fallthrough を使うと、Go は条件を確認せずに次の case のコードを実行します。これは、次の case に処理が進むのを防ぐために 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つのケースに対して、関連する複数の処理を実行できます。

challenge icon

チャレンジ

簡単

このチャレンジでは、スイッチ文でfallthroughキーワードを使い、優先度に応じた警告システムを作る練習をします。優先度の高い警告が発生したとき、システムは複数の警告メッセージを順に表示します。

警告レベルを表す文字列が入力されます。さまざまな警告レベルを処理し、優先度の高い警告に対して段階的にメッセージを表示するためにfallthroughを使うスイッチ文を作成してください。

入力される警告レベルは、"critical"、"high"、"medium"、または"low"のいずれかです。

スイッチ文は次のように動作する必要があります。

  • "critical"の場合: "CRITICAL: System shutdown imminent!"を出力し、highのケースへフォールスルーします(さらにそこからmediumへフォールスルーします)
  • "high"の場合: "HIGH: Immediate attention required!"を出力し、続けてmediumの優先度メッセージも出力するようフォールスルーします
  • "medium"の場合: "MEDIUM: Please review when possible"を出力します
  • "low"の場合: "LOW: Informational only"を出力します

fallthroughは連鎖するため、"critical"の警告では3行(CRITICAL、HIGH、MEDIUM)、"high"の警告では2行(HIGH、MEDIUM)が出力され、"medium"と"low"ではそれぞれ1行が出力されます。

自分で試してみよう

package main

import "fmt"

func main() {
    // 入力を読み取る
    var alertLevel string
    fmt.Scanln(&alertLevel)
    
    // TODO: 以下にコードを書く
    // 警報システム用にfallthroughを使ったswitch文を作成する
    
}
quiz icon腕試し

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

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

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