Sobes.tech
Junior — Middle

Cosa succede se si tenta di leggere i dati da un canale che non è ancora stato inizializzato?

sobes.tech AI

Risposta dell'AI

Se si tenta di leggere dati da un canale in Go che non è stato inizializzato (cioè, è nil), l'operazione di lettura si bloccherà per sempre. Questo farà sì che la goroutine che tenta di leggere da quel canale si blocchi, poiché il canale non esiste e non può trasmettere dati.

Esempio:

var ch chan int // ch è nil

func main() {
    fmt.Println(<-ch) // si blocca per sempre
}

Per evitare ciò, il canale deve essere inizializzato con make, ad esempio: ch := make(chan int).