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 terminano automaticamente. Tuttavia, la parola chiave fallthrough modifica questo comportamento forzando l'esecuzione a continuare con il 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. È diverso da linguaggi come C, dove devi usare break per impedire il fall-through.
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", verranno stampati sia "Good job!" sia "Keep trying!" a causa dell'istruzione fallthrough. Questo ti permette 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 con priorità. 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" o "low".
La tua istruzione switch dovrebbe funzionare così:
- Per
"critical": stampa "CRITICAL: System shutdown imminent!" e passa al caso high (che a sua volta passa a medium) - Per
"high": stampa "HIGH: Immediate attention required!" e passa alla stampa del messaggio di priorità medium - Per
"medium": stampa "MEDIUM: Please review when possible" - Per
"low": stampa "LOW: Informational only"
Poiché fallthrough crea una catena, un avviso "critical" stampa tre righe (CRITICAL, HIGH, MEDIUM), un avviso "high" ne stampa due (HIGH, MEDIUM) e "medium" e "low" ne stampano una ciascuno.
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