Senior
Šta se dešava pri čitanju iz zatvorenog kanala u Go?
sobes.tech АИ
Одговор од АИ
Kada čitate iz zatvorenog kanala u Go, dešava se sledeće:
- Ako u kanalu postoje podaci, oni će biti pročitani kao i obično.
- Ako je kanal zatvoren i nema podataka, operacija čitanja će vratiti nultu vrednost tipa kanala i
falseu drugoj vrednosti (ako se koristi oblik sa dve vrednosti povratka).
Primer:
ch := make(chan int)
close(ch)
v, ok := <-ch
fmt.Println(v, ok) // Ispisaće: 0 false
Ovo omogućava da se odredi da je kanal zatvoren i da više podataka neće biti. Čitanjem iz zatvorenog kanala bez podataka, gorutina se ne blokira i odmah dobija nultu vrednost.
Ako čitate iz zatvorenog kanala bez provere druge vrednosti, možete dobiti nultne podatke, što je važno uzeti u obzir u logici obrade.