Junior — Middle
Koja je razlika između dobijanja nulte vrednosti iz zatvorenog kanala i dobijanja iste te vrednosti prilikom samostalnog kreiranja kanala i slanja podataka?
sobes.tech АИ
Одговор од АИ
U Go, pri čitanju iz kanala, ako je kanal zatvoren i nema više podataka, operacija čitanja vraća nultu vrednost tipa kanala i false u drugoj vraćenoj vrednosti (ako se koristi sintaksa v, ok := <-ch). Ovo signalizira da je kanal zatvoren i da više podataka neće biti.
Ako, međutim, kreirate kanal, pošaljete mu nultu vrednost i pročitate, operacija čitanja će vratiti tu nultu vrednost, ali ok će biti true, jer je kanal otvoren i podaci su primljeni.
Rezime:
- Zatvoren kanal bez podataka: čitanje vraća nultu vrednost +
ok == false. - Otvoren kanal sa nul vrednošću: čitanje vraća nultu vrednost +
ok == true.
Ovo omogućava razlikovanje prave nulte vrednosti od signala zatvaranja kanala.