Middle+
Chi dovrebbe chiudere il canale - lo scrittore o il lettore?
sobes.tech AI
Risposta dell'AI
In Go, il canale deve essere chiuso dal mittente (sender), non dal destinatario (receiver). La chiusura del canale segnala che non verranno inviati più valori, e i lettori possono terminare correttamente la lettura rilevando il canale chiuso.
Se il lettore chiude il canale e il mittente continua a tentare di inviare, ciò provocherà un panic. Pertanto, la responsabilità di chiudere il canale ricade sulla parte che lo scrive.
Esempio:
ch := make(chan int)
func() {
defer close(ch) // il mittente chiude il canale
for i := 0; i < 5; i++ {
ch <- i
}
}()
for val := range ch {
fmt.Println(val) // legge fino alla chiusura
}