`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"の場合: "HIGH: Immediate attention required!"を出力し、さらに中優先度のメッセージも出力するようにフォールスルーさせます"medium"の場合: "MEDIUM: Please review when possible"を出力します"low"の場合: "LOW: Informational only"を出力します
fallthroughキーワードを使用して、クリティカルなアラートではクリティカルと高優先度の両方のメッセージが表示され、高優先度のアラートでは高優先度と中優先度の両方のメッセージが表示されるようにしてください。
自分で試してみよう
package main
import "fmt"
func main() {
// 入力を読み込む
var alertLevel string
fmt.Scanln(&alertLevel)
// TODO: 以下にコードを記述してください
// アラートシステム用に fallthrough を使用した switch 文を作成する
}このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。