Senior
Co se děje při čtení a zápisu v uzavřeném kanálu?
sobes.tech AI
Odpověď od AI
V Go při práci s kanály:
-
Čtení z uzavřeného kanálu: Pokud je kanál uzavřený a v něm nejsou žádná data, operace čtení vrací nulovou hodnotu typu kanálu a
falseve druhé hodnotě (pokud je použita), což signalizuje uzavření kanálu. -
Zápis do uzavřeného kanálu: Pokus o zápis do uzavřeného kanálu způsobí paniku (
panic). Jedná se o chybu za běhu.
Příklad:
ch := make(chan int)
close(ch)
// Čtení
v, ok := <-ch // ok == false, v == 0
// Zápis
ch <- 1 // panic: send on closed channel
Tedy, uzavřený kanál lze bezpečně číst, dokud v něm jsou data, ale nelze do něj zapisovat.