Junior — Middle
Este permis să trimiteți date către un canal care nu este deschis pentru citire și scriere?
sobes.tech AI
Răspuns de la AI
În Go, nu se poate trimite date către un canal care nu este deschis pentru scriere. Dacă canalul este închis (se închide cu close(channel)), încercarea de a trimite în el va provoca un panic (panic în timpul execuției).
Cu toate acestea, citirea dintr-un canal închis este posibilă: în acest caz, citirea va returna valoarea zero a tipului canalului și un semnal care indică faptul că canalul este închis.
Exemplu:
ch := make(chan int)
close(ch)
// Citirea dintr-un canal închis este sigură
value, ok := <-ch // ok == false
// Trimiterea într-un canal închis va provoca un panic
ch <- 1 // panic: send on closed channel
Prin urmare, se pot trimite date doar în canale deschise.