Sobes.tech
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.