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 Fall aus und beenden sich dann automatisch. Das Schlüsselwort fallthrough ändert dieses Verhalten jedoch, indem es die Ausführung zwingt, mit dem nächsten Fall fortzufahren, unabhängig davon, ob dieser übereinstimmt.
Wenn Sie fallthrough am Ende eines Case verwenden, führt Go den Code des nächsten Case aus, ohne dessen Bedingung zu prüfen. Dies unterscheidet sich von Sprachen wie C, in denen Sie break benötigen, um ein Durchlaufen 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 wird, wenn grade „B“ ist, aufgrund der fallthrough-Anweisung sowohl „Good job!“ als auch „Keep trying!“ ausgegeben. Dies ermöglicht es Ihnen, mehrere verwandte Aktionen für einen einzelnen übereinstimmenden Fall auszuführen.
Aufgabe
EinfachIn dieser Herausforderung üben Sie die Verwendung des Schlüsselworts fallthrough in einer switch-Anweisung, um ein Prioritäts-Alarmsystem zu erstellen. Wenn ein Alarm mit hoher Priorität ausgelöst wird, soll das System mehrere Warnmeldungen nacheinander anzeigen.
Sie erhalten eine String-Eingabe, die eine Alarmstufe darstellt. Erstellen Sie eine switch-Anweisung, die verschiedene Alarmstufen verarbeitet und fallthrough verwendet, um kaskadierende Meldungen für Alarme mit höherer Priorität anzuzeigen.
Die Eingabe ist eine dieser Alarmstufen: "critical", "high", "medium" oder "low".
Ihre switch-Anweisung sollte wie folgt funktionieren:
- Für
"critical": Geben Sie "CRITICAL: System shutdown imminent!" aus und nutzen Sie fallthrough, um auch die Meldung für hohe Priorität auszugeben. - Für
"high": Geben Sie "HIGH: Immediate attention required!" aus und nutzen Sie fallthrough, um auch die Meldung für mittlere Priorität auszugeben. - Für
"medium": Geben Sie "MEDIUM: Please review when possible" aus. - Für
"low": Geben Sie "LOW: Informational only" aus.
Verwenden Sie das Schlüsselwort fallthrough, sodass kritische Alarme sowohl die kritischen als auch die Meldungen mit hoher Priorität anzeigen und hohe Alarme sowohl die Meldungen mit hoher als auch mit mittlerer Priorität anzeigen.
Probier es selbst
package main
import "fmt"
func main() {
// Eingabe lesen
var alertLevel string
fmt.Scanln(&alertLevel)
// TODO: Schreibe deinen Code unten
// Erstelle eine switch-Anweisung mit fallthrough für das Alarmsystem
}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