Switch mit `fallthrough`
Teil des Abschnitts Logik & Ablauf der GO-Journey von Coddy. Lektion 1 von 68.
In Go führen switch-Anweisungen normalerweise nur den passenden case aus und werden dann automatisch beendet. Das Schlüsselwort fallthrough ändert dieses Verhalten jedoch, indem es die Ausführung zwingt, mit dem nächsten case fortzufahren, unabhängig davon, ob dieser zutrifft.
Wenn du fallthrough am Ende eines Falls verwendest, führt Go den Code des nächsten Falls aus, ohne dessen Bedingung zu prüfen. Das unterscheidet sich von Sprachen wie C, in denen du break benötigst, um ein Durchfallen in den nächsten Fall zu verhindern.
grade := "B"
switch grade {
case "A":
fmt.Println("Excellent!")
fallthrough
case "B":
fmt.Println("Good job!")
fallthrough
case "C":
fmt.Println("Keep trying!")
}In diesem Beispiel gibt es sowohl "Good job!" als auch "Keep trying!" aus, wenn grade den Wert "B" hat, und zwar aufgrund der fallthrough-Anweisung. Dadurch kannst du mehrere zusammengehörige Aktionen für einen einzigen passenden Fall ausführen.
Aufgabe
EinfachIn dieser Challenge übst du, das Schlüsselwort fallthrough in einer switch-Anweisung zu verwenden, um ein Warnsystem mit Prioritäten zu erstellen. Wenn ein Alarm mit hoher Priorität ausgelöst wird, soll das System mehrere Warnmeldungen nacheinander anzeigen.
Du erhältst eine String-Eingabe, die eine Alarmstufe darstellt. Erstelle eine switch-Anweisung, die verschiedene Alarmstufen behandelt und fallthrough verwendet, um für Alarme mit höherer Priorität kaskadierende Meldungen anzuzeigen.
Die Eingabe entspricht einer dieser Alarmstufen: "critical", "high", "medium" oder "low".
Deine switch-Anweisung soll wie folgt funktionieren:
- Für
"critical": Gib "CRITICAL: System shutdown imminent!" aus und gehe mit fallthrough zum Fall „high“ über (der wiederum mit fallthrough zum Fall „medium“ übergeht) - Für
"high": Gib "HIGH: Immediate attention required!" aus und gehe mit fallthrough über, um auch die Meldung für die Priorität „medium“ auszugeben - Für
"medium": Gib "MEDIUM: Please review when possible" aus - Für
"low": Gib "LOW: Informational only" aus
Da sich fallthrough-Übergänge verketten, gibt ein Alarm der Stufe "critical" drei Zeilen aus (CRITICAL, HIGH, MEDIUM), ein Alarm der Stufe "high" gibt zwei Zeilen aus (HIGH, MEDIUM), und "medium" sowie "low" geben jeweils eine Zeile aus.
Probier es selbst
package main
import "fmt"
func main() {
// Eingabe einlesen
var alertLevel string
fmt.Scanln(&alertLevel)
// TODO: Schreibe deinen Code unten
// Erstelle eine switch-Anweisung mit fallthrough für das Warnsystem
}Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Logik & Ablauf
1Fortgeschrittener Kontrollfluss
Switch mit `fallthrough`Abbrechen von verschachtelten SchleifenFortsetzen einer bestimmten SchleifeDie `goto`-AnweisungZusammenfassung – Fortgeschrittene Schleifensteuerung4Projekt: Einfache Aufgabenliste
Projekt-SetupEine Aufgabe hinzufügen2Structs und Methoden
Methoden für Structs definierenValue ReceiverPointer ReceiverReceiver auswählenMethoden vs. FunktionenZusammenfassung – Struct-Verhalten5Maps im Detail
Maps von StructsPointer als Map-WertePrüfen auf Nil-MapsMaps vergleichenZusammenfassung – Wortfrequenz-Zähler8Projekt: Einfache Bestandsverwaltung
ProjektübersichtLagerbestand prüfen11Abschlussherausforderungen
Einfache KontaktlisteEinfacher Zahlen-ValidatorSammler für eindeutige Elemente3Interfaces (Die Grundlagen)
Was ist ein Interface?Ein Interface definierenEin Interface implementierenInterface-Typen verwendenLeeres InterfaceType AssertionsType SwitchZusammenfassung – Formen und VerhaltenÜbe selbstständig: Online-Go-Compiler