Senior
Čo sa deje pri čítaní a zápise v uzavretom kanáli?
sobes.tech AI
Odpoveď od AI
V Go pri práci s kanálmi:
-
Čítanie zo zatvoreného kanála: Ak je kanál zatvorený a v ňom nie sú žiadne dáta, operácia čítania vráti nulovú hodnotu typu kanála a
falsev druhej hodnote (ak sa používa), čo signalizuje zatvorenie kanála. -
Zápis do zatvoreného kanála: Pokus o zápis do zatvoreného kanála spôsobí paniku (
panic). Ide o chybu za behu.
Príklad:
ch := make(chan int)
close(ch)
// Čítanie
v, ok := <-ch // ok == false, v == 0
// Zápis
ch <- 1 // panic: send on closed channel
Teda, zatvorený kanál možno bezpečne čítať, kým v ňom sú dáta, ale nie je možné do neho zapisovať.