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, beim 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.
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Aufgabe
EinfachIn dieser Herausforderung wirst du üben, das fallthrough-Schlüsselwort in einer switch-Anweisung zu verwenden, um ein Prioritäts-Alarmsystem zu erstellen. Wenn ein Alarm mit hoher Priorität ausgelöst wird, sollte das System mehrere Warnmeldungen nacheinander anzeigen.
Du erhältst eine String-Eingabe, die eine Alarmstufe darstellt. Erstelle eine switch-Anweisung, die verschiedene Alarmstufen verarbeitet und fallthrough verwendet, um kaskadierende Meldungen für Alarme mit höherer Priorität anzuzeigen.
Die Eingabe wird eine dieser Alarmstufen sein: "critical", "high", "medium" oder "low".
Deine switch-Anweisung sollte wie folgt funktionieren:
- Für
"critical": Gib "CRITICAL: System shutdown imminent!" aus und verwende fallthrough, um auch die Meldung für hohe Priorität auszugeben - Für
"high": Gib "HIGH: Immediate attention required!" aus und verwende fallthrough, um auch die Meldung für mittlere Priorität auszugeben - Für
"medium": Gib "MEDIUM: Please review when possible" aus - Für
"low": Gib "LOW: Informational only" aus
Verwende das fallthrough-Schlüsselwort, sodass kritische Alarme sowohl die kritische als auch die Meldung für hohe Priorität anzeigen, und Alarme mit hoher Priorität sowohl die Meldung für hohe als auch für mittlere Priorität anzeigen.
Spickzettel
Das Schlüsselwort fallthrough in Go-switch-Anweisungen erzwingt die Fortsetzung der Ausführung beim nächsten Case, ohne dessen Bedingung zu prüfen:
grade := "B"
switch grade {
case "A":
fmt.Println("Excellent!")
fallthrough
case "B":
fmt.Println("Good job!")
fallthrough
case "C":
fmt.Println("Keep trying!")
}Wenn grade den Wert "B" hat, werden aufgrund der fallthrough-Anweisung sowohl "Good job!" und "Keep trying!" ausgegeben. Im Gegensatz zu Sprachen wie C werden Go-switch-Anweisungen nach einem passenden Case automatisch beendet, sofern kein fallthrough verwendet wird.
Probier es selbst
package main
import "fmt"
func main() {
// Eingabe lesen
var alertLevel string
fmt.Scanln(&alertLevel)
// TODO: Schreiben Sie Ihren Code unten
// Erstellen Sie 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