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