Middle+
In quali condizioni la lettura da un canale verrà bloccata per sempre? Cosa succede scrivendo in un canale nil? Scrivendo in un canale chiuso?
sobes.tech AI
Risposta dell'AI
-
La lettura dal canale si bloccherà per sempre se il canale è vuoto e nessuno intende scriverci (ad esempio, tutti gli invii sono chiusi o assenti).
-
La scrittura in un canale nil (un canale uguale a nil) si bloccherà sempre per sempre, poiché il canale nil non è inizializzato e non può ricevere dati.
-
La scrittura in un canale chiuso provoca un panic in Go, poiché ciò è vietato e considerato un errore di runtime.
Esempio:
var ch chan int // canale nil
// <-ch // la lettura dal canale nil si blocca per sempre
// ch <- 1 // la scrittura in un canale nil si blocca per sempre
ch = make(chan int)
close(ch)
// ch <- 2 // panic: invio su canale chiuso