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.