Junior — Middle
Qual è la differenza tra ottenere un valore nullo da un canale chiuso e ottenere lo stesso valore creando un canale da solo e inviandoci dati?
sobes.tech AI
Risposta dell'AI
In Go, leggendo da un canale, se il canale è chiuso e non ci sono più dati, l'operazione di lettura restituisce il valore zero del tipo del canale e false nel secondo valore restituito (se si utilizza la sintassi v, ok := <-ch). Questo segnala che il canale è chiuso e non ci saranno più dati.
Se invece crei un canale, invii un valore nullo e lo leggi, l'operazione di lettura restituirà questo valore nullo, ma ok sarà true, poiché il canale è aperto e i dati sono stati ricevuti.
Riassunto:
- Canale chiuso senza dati: la lettura restituisce il valore zero +
ok == false. - Canale aperto con valore nullo: la lettura restituisce il valore nullo +
ok == true.
Questo permette di distinguere tra il valore nullo reale e il segnale di chiusura del canale.