0Pricing
Go Academy · Lezione

Istruzioni switch in Go

switch con e senza espressione, fallthrough

Istruzioni switch in Go è una lezione Go Academy gratuita su CoddyKit. Questa è la lezione 3 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Go Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Go Academy include 4 lezioni in totale.

Fondamenti di switch

Lo switch di Go è più potente di quello di C: per impostazione predefinita non esegue il fall-through e i casi possono contenere più valori:

day := "Monday"
switch day {
case "Saturday", "Sunday":
    fmt.Println("Weekend")
default:
    fmt.Println("Weekday")
}

Nessun fall-through implicito

In Go, il corpo di ogni case termina automaticamente, a differenza di C, dove è necessario scrivere esplicitamente break:

  • Codice più chiaro e meno bug
  • Utilizzi fallthrough esplicitamente quando serve un comportamento simile a quello di C, evento raro

switch con istruzione di inizializzazione

Come if, anche switch accetta un'istruzione di inizializzazione facoltativa:

switch os := runtime.GOOS; os {
case "linux":
    fmt.Println("Linux")
case "darwin":
    fmt.Println("macOS")
default:
    fmt.Printf("Other: %s\n", os)
}

switch senza espressione (alternativa alla catena if-else)

Uno switch senza espressione non presenta nulla dopo la parola chiave: ogni caso valuta un booleano:

score := 75
switch {
case score >= 90:
    fmt.Println("A")
case score >= 80:
    fmt.Println("B")
case score >= 70:
    fmt.Println("C")
default:
    fmt.Println("F")
}

Type switch

Un type switch esamina il tipo dinamico di un valore di interfaccia:

func describe(i interface{}) {
    switch v := i.(type) {
    case int:
        fmt.Printf("int: %d\n", v)
    case string:
        fmt.Printf("string: %s\n", v)
    default:
        fmt.Printf("unknown: %T\n", v)
    }
}

fallthrough

Utilizzi fallthrough per eseguire esplicitamente il corpo del caso successivo indipendentemente dalla sua condizione; è raramente necessario:

n := 1
switch n {
case 1:
    fmt.Println("one")
    fallthrough
case 2:
    fmt.Println("one or two")
}

Più valori per ogni case

Elencare più valori separati da virgole in un singolo case:

func isVowel(c byte) bool {
    switch c {
    case 'a', 'e', 'i', 'o', 'u':
        return true
    }
    return false
}

switch e if-else a confronto

Utilizzi switch quando:

  • Confronta un'espressione con molti valori
  • Utilizza un type switch per la distribuzione su interfacce
  • La leggibilità migliora rispetto a una catena di if-else

Utilizzi if-else quando le condizioni sono espressioni booleane diverse.

break in switch

Per uscire anticipatamente da uno switch, utilizzi break. Per uscire da un ciclo esterno dall'interno di uno switch, utilizzi un break con etichetta:

loop:
for {
    switch input() {
    case "quit":
        break loop  // exits the for loop
    }
}

Caso default

Il caso default viene eseguito quando nessun altro caso corrisponde. Buone pratiche:

  • Includa sempre default quando gestisce enumerazioni, per intercettare valori imprevisti
  • Lo posizioni in fondo per migliorare la leggibilità
  • Nei type switch, utilizzi default per gestire con eleganza i tipi non supportati

Verifica rapida

In Go, cosa accade quando un caso dello switch corrisponde: l'esecuzione prosegue nel caso successivo?

Riepilogo: switch in Go

Lo switch di Go è chiaro e potente:

  • Nessun fall-through implicito: utilizzi fallthrough esplicitamente
  • Istruzione di inizializzazione per limitare l'ambito delle variabili temporanee
  • Switch senza espressione come alternativa a una catena if-else
  • Type switch per la distribuzione su interfacce
  • Più valori per ogni case, separati da virgole

Successivo: controllo dei cicli con break, continue ed etichette.

Domande Frequenti

La lezione «Istruzioni switch in Go» è gratuita?

Sì — il testo completo di «Istruzioni switch in Go» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Go Academy, passa a CoddyKit PRO. Il corso Go Academy include 4 lezioni in totale.

Cosa imparerò in «Istruzioni switch in Go»?

switch con e senza espressione, fallthrough Eserciti Go Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare Go Academy?

Non è richiesta alcuna esperienza precedente. Go Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 3 di 4.

Quanto tempo richiede la lezione «Istruzioni switch in Go»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione Go Academy?

Sì. Ogni lezione Go Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Istruzioni if ed espressioni di inizializzazione
  2. Il ciclo for: tutti i modelli
  3. Istruzioni switch in Go
  4. break, continue ed etichette
← Torna a Go Academy