Sobes.tech
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 false v 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ť.