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