Junior — Middle
Come funziona il meccanismo di lettura dei dati da un canale chiuso e cosa succede in quel momento?
sobes.tech AI
Risposta dell'AI
In Go, la lettura da un canale è un'operazione che blocca la goroutine chiamante finché nel canale non ci sono dati o finché il canale non viene chiuso.
Se il canale è chiuso e non ci sono più dati, la lettura restituisce un valore nullo del tipo del canale e un flag che indica che il canale è chiuso. Questo permette di determinare che non ci saranno ulteriori dati.
Esempio:
ch := make(chan int)
close(ch)
value, ok := <-ch
if !ok {
fmt.Println("Canale chiuso, nessun dato")
}
In questo modo, leggendo da un canale chiuso, la goroutine non si blocca, ma riceve un segnale di chiusura, che permette di terminare correttamente il lavoro con il canale.