Junior — Middle
Care este diferența dintre obținerea unei valori nule dintr-un canal închis și obținerea aceleiași valori atunci când creezi singur un canal și trimiți date acolo?
sobes.tech AI
Răspuns de la AI
În Go, la citirea dintr-un canal, dacă canalul este închis și nu mai există date, operația de citire returnează valoarea zero a tipului canalului și false în al doilea rezultat (dacă se folosește sintaxa v, ok := <-ch). Acest lucru semnalează că canalul este închis și nu vor mai fi date.
Dacă, în schimb, creați un canal, trimiteți o valoare nulă și o citiți, operația de citire va returna această valoare nulă, dar ok va fi true, deoarece canalul este deschis și datele au fost primite.
Rezumat:
- Canal închis fără date: citirea returnează valoarea zero +
ok == false. - Canal deschis cu valoare nulă: citirea returnează valoarea nulă +
ok == true.
Acest lucru permite diferențierea între valoarea nulă reală și semnalul de închidere a canalului.