Sobes.tech
Junior — Middle

Cum funcționează mecanismul de citire a datelor dintr-un canal închis și ce se întâmplă în acel moment?

sobes.tech AI

Răspuns de la AI

În Go, citirea dintr-un canal este o operație care blochează goroutine-ul apelant până când apar date în canal sau până când canalul este închis.

Dacă canalul este închis și nu mai există date în el, citirea returnează o valoare nulă a tipului canalului și un semnal care indică faptul că canalul este închis. Acest lucru permite determinarea faptului că nu vor mai fi date.

Exemplu:

ch := make(chan int)
close(ch)
value, ok := <-ch
if !ok {
    fmt.Println("Canal închis, fără date")
}

Astfel, la citirea dintr-un canal închis, goroutine-ul nu se blochează, ci primește un semnal de închidere, ceea ce permite închiderea corectă a lucrului cu canalul.