Sobes.tech
Middle+

Chi dovrebbe chiudere il canale?

sobes.tech AI

Risposta dell'AI

Colui che ha creato il canale deve chiuderlo e non intende più inviare dati. Questo è importante per evitare panico nel tentativo di inviare dati a un canale chiuso e affinché i destinatari possano determinare correttamente la fine del flusso di dati.

Regole principali:

  • Il mittente chiude il canale quando non invierà più valori.
  • I destinatari non devono chiudere il canale.
  • La chiusura del canale segnala ai destinatari che non ci saranno più dati.

Esempio:

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

func consumatore(ch <-chan int) {
    for val := range ch {
        fmt.Println(val)
    }
    // Quando il canale è chiuso, il ciclo termina
}

func main() {
    ch := make(chan int)
    go produttore(ch)
    consumatore(ch)
}