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