Senior
Šta se dešava pri čitanju i pisanju u zatvorenom kanalu?
sobes.tech АИ
Одговор од АИ
U Go-u, prilikom rada sa kanalima:
-
Čitanje iz zatvorenog kanala: Ako je kanal zatvoren i nema podataka, operacija čitanja vraća početnu vrednost tipa kanala i
falseu drugoj vrednosti (ako se koristi), što signalizira zatvaranje kanala. -
Pisanje u zatvoreni kanal: Pokušaj pisanja u zatvoreni kanal izaziva paniku (
panic). Ovo je greška u izvršenju.
Primer:
ch := make(chan int)
close(ch)
// Čitanje
v, ok := <-ch // ok == false, v == 0
// Pisanje
ch <- 1 // panic: send on closed channel
Dakle, zatvoreni kanal može biti sigurno čitan dok ima podataka, ali u njega ne može pisati.