Sobes.tech
Junior — Middle

È consentito inviare dati a un canale che non è aperto alla lettura e alla scrittura?

sobes.tech AI

Risposta dell'AI

In Go, non è possibile inviare dati a un canale che non è aperto per la scrittura. Se il canale è chiuso (chiusura tramite close(channel)), tentare di inviarvi dati provocherà un panic (panic in runtime).

Tuttavia, è possibile leggere da un canale chiuso: in questo caso, la lettura restituirà il valore zero del tipo del canale e un flag che indica che il canale è chiuso.

Esempio:

ch := make(chan int)
close(ch)

// La lettura da un canale chiuso è sicura
value, ok := <-ch // ok == false

// L'invio a un canale chiuso provocherà un panic
ch <- 1 // panic: send on closed channel

Pertanto, è possibile inviare dati solo ai canali aperti.