Junior — Middle
Je povolené odosielať údaje do kanála, ktorý nie je otvorený na čítanie a zápis?
sobes.tech AI
Odpoveď od AI
V jazyku Go nie je možné odosielať údaje do kanála, ktorý nie je otvorený pre zápis. Ak je kanál zatvorený (zatvorenie pomocou close(channel)), pokus o jeho odoslanie spôsobí pániku (runtime panic).
Avšak, čítanie zo zatvoreného kanála je možné — pri tom čítanie vráti nulovú hodnotu typu kanála a vlajku, ktorá ukazuje, že kanál je zatvorený.
Príklad:
ch := make(chan int)
close(ch)
// Čítanie zo zatvoreného kanála je bezpečné
value, ok := <-ch // ok == false
// Odoslanie do zatvoreného kanála spôsobí pániku
ch <- 1 // panic: send on closed channel
Teda, údaje je možné odosielať iba do otvorených kanálov.