Menu
Coddy logo textTech

`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つの合致するケースに対して、関連する複数のアクションを実行できます。

quiz icon腕試し

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

quiz icon腕試し

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

quiz icon腕試し

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

challenge icon

チャレンジ

簡単

このチャレンジでは、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 キーワードを使用して、クリティカルなアラートではクリティカルと高優先度の両方のメッセージが表示され、高優先度のアラートでは高優先度と中優先度の両方のメッセージが表示されるようにしてください。

チートシート

Goのswitch文におけるfallthroughキーワードは、条件をチェックすることなく次のcaseへ実行を強制的に継続させます。

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!"の両方が出力されます。C言語などの他の言語とは異なり、Goのswitch文は、fallthroughが使用されない限り、一致するcaseの後に自動的に終了します。

自分で試してみよう

package main

import "fmt"

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

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

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