Junior — Middle
È possibile inviare dati a un canale con valore nil?
sobes.tech AI
Risposta dell'AI
In Go, non è possibile inviare dati a un canale se questo è nil. Tentare di inviare un valore a un canale nil bloccherà indefinitamente la goroutine, poiché tale canale non è inizializzato e non può ricevere dati.
Esempio:
var ch chan int // ch == nil
go func() {
ch <- 1 // si blocca per sempre
}()
// il programma si bloccherà
Per evitare il blocco, bisogna inizializzare il canale prima di usarlo:
ch := make(chan int)
ch <- 1 // funziona correttamente
Se il canale può essere nil, prima di inviare, verificare il suo valore o usare select con default per evitare blocchi.