Sobes.tech
Junior — Middle

In quale punto del codice è necessario chiudere il canale?

sobes.tech AI

Risposta dell'AI

In Go, il canale deve essere chiuso nel punto in cui viene creato e dove non si prevede più di inviare dati. Di solito, lo fa il mittente per segnalare ai destinatari che non ci saranno più dati.

Importante:

  • I destinatari possono verificare la chiusura del canale durante la lettura.
  • Solo il mittente dovrebbe chiudere il canale per evitare panico.

Esempio:

ch := make(chan int)
func() {
    defer close(ch) // chiudiamo il canale dopo aver inviato tutti i dati
    for i := 0; i < 5; i++ {
        ch <- i
    }
}()

for val := range ch {
    fmt.Println(val) // ricevi dati finché il canale non si chiude
}