`fallthrough` を伴う Switch 文
CoddyのGOジャーニー「論理とフロー」セクションの一部。レッスン 1/68。
Goでは、switch文は通常、一致するcaseだけを実行し、その後自動的に終了します。ただし、fallthroughキーワードを使うと、一致するかどうかにかかわらず、次のcaseへ実行を続けるように動作が変わります。
case の末尾で fallthrough を使うと、Go は条件を確認せずに次の 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つのケースに対して、関連する複数の処理を実行できます。
チャレンジ
簡単このチャレンジでは、switch文でfallthroughキーワードを使い、優先度に応じたアラートシステムを作成する練習をします。高優先度のアラートが発生すると、システムは複数の警告メッセージを順番に表示します。
アラートレベルを表す文字列入力を受け取ります。さまざまなアラートレベルを処理し、優先度の高いアラートに対して連鎖するメッセージを表示するために、fallthroughを使うswitch文を作成してください。
入力は次のいずれかのアラートレベルです: "critical"、"high"、"medium"、または"low"。
switch文は次のように動作する必要があります:
"critical"の場合: "CRITICAL: System shutdown imminent!"を出力し、highのcaseへフォールスルーする(そこからさらに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文を作成する
}このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
論理とフローのすべてのレッスン
自分で練習してみよう: Goオンラインコンパイラ