Switch con `fallthrough`
Fa parte della sezione Logica e flusso del percorso GO di Coddy. Lezione 1 di 68.
In Go, le istruzioni switch eseguono normalmente solo il case corrispondente e poi escono automaticamente. Tuttavia, la parola chiave fallthrough modifica questo comportamento forzando l'esecuzione a continuare nel case successivo, indipendentemente dal fatto che corrisponda o meno.
Quando usi fallthrough alla fine di un case, Go eseguirà il codice del case successivo senza verificarne la condizione. Questo è diverso da linguaggi come C, dove devi usare break per impedire il passaggio al case successivo.
grade := "B"
switch grade {
case "A":
fmt.Println("Excellent!")
fallthrough
case "B":
fmt.Println("Good job!")
fallthrough
case "C":
fmt.Println("Keep trying!")
}In questo esempio, se grade è "B", stamperà sia "Good job!" sia "Keep trying!" a causa dell'istruzione fallthrough. Questo ti consente di eseguire più azioni correlate per un singolo caso corrispondente.
Sfida
FacileIn questa sfida, ti eserciterai a usare la parola chiave fallthrough in un'istruzione switch per creare un sistema di avvisi prioritari. Quando viene attivato un avviso ad alta priorità, il sistema dovrebbe visualizzare più messaggi di avviso in sequenza.
Riceverai una stringa in input che rappresenta un livello di avviso. Crea un'istruzione switch che gestisca i diversi livelli di avviso e usi fallthrough per visualizzare messaggi a cascata per gli avvisi con priorità più alta.
L'input sarà uno di questi livelli di avviso: "critical", "high", "medium" oppure "low".
La tua istruzione switch dovrebbe funzionare così:
- Per
"critical": stampa "CRITICAL: System shutdown imminent!" e prosegui con il messaggio di alta priorità - Per
"high": stampa "HIGH: Immediate attention required!" e prosegui con il messaggio di media priorità - Per
"medium": stampa "MEDIUM: Please review when possible" - Per
"low": stampa "LOW: Informational only"
Usa la parola chiave fallthrough in modo che gli avvisi critici visualizzino sia i messaggi di priorità critica che quelli di alta priorità, e gli avvisi di alta priorità visualizzino sia i messaggi di alta priorità che quelli di media priorità.
Provalo tu
package main
import "fmt"
func main() {
// Leggi l'input
var alertLevel string
fmt.Scanln(&alertLevel)
// TODO: Scrivi il tuo codice qui sotto
// Crea un'istruzione switch con fallthrough per il sistema di allerta
}Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Logica e flusso
1Flusso di controllo avanzato
Switch con `fallthrough`Uscire dai cicli annidatiContinuare un ciclo specificoL'istruzione `goto`Riepilogo - Controllo avanzato dei cicli4Progetto: semplice lista di attività
Configurazione del progettoAggiungere un’attività2Struct e metodi
Definire metodi sugli structReceiver per valoreReceiver con puntatoreScegliere i receiverMetodi vs funzioniRiepilogo - comportamento degli struct5Mappe in dettaglio
Mappe di structPuntatori come valori delle mappeVerificare le mappe nilConfrontare le mappeRiepilogo - Contatore della frequenza delle parole3Interfacce (le basi)
Che cos’è un’interfaccia?Definire un’interfacciaImplementare un’interfacciaUsare i tipi interfacciaInterfaccia vuotaAsserzioni di tipoSwitch di tipoRiepilogo: forme e comportamentiEsercitati da solo: Compilatore Go online