Senior
Cosa succede leggendo da un canale chiuso in Go?
sobes.tech AI
Risposta dell'AI
Leggendo da un canale chiuso in Go, succede quanto segue:
- Se ci sono dati nel canale, verranno letti normalmente.
- Se il canale è chiuso e non ci sono dati, l'operazione di lettura restituirà il valore zero del tipo del canale e
falsenel secondo valore restituito (se si utilizza la forma con due valori di ritorno).
Esempio:
ch := make(chan int)
close(ch)
v, ok := <-ch
fmt.Println(v, ok) // Stamperà: 0 false
Questo permette di determinare che il canale è chiuso e non ci saranno più dati. Quando si legge da un canale chiuso senza dati, la goroutine non si blocca e riceve immediatamente il valore zero.
Se si legge da un canale chiuso senza verificare il secondo valore, si possono ottenere dati nulli, il che è importante considerare nella logica di elaborazione.