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)
}