Middle
Jak vyvolat paniku při práci s kanálem? Co se děje při operacích s nil-kanálem a uzavřeným kanálem?
sobes.tech AI
Odpověď od AI
V Go při práci s kanály dochází k panice v následujících případech:
- Odeslání hodnoty na uzavřený kanál (
chan <- value) způsobí paniku. - Uzavření již uzavřeného kanálu (
close(chan)) způsobí paniku.
Co se týče nil-kanálů:
- Operace odeslání a příjmu s nil-kanálem se navždy blokují (deadlock), ale nezpůsobují paniku.
Příklad:
var ch chan int // nil-kanál
// <-ch // blokuje se navždy
// ch <- 1 // blokuje se navždy
ch = make(chan int)
close(ch)
// ch <- 1 // panika: odeslání na uzavřený kanál
close(ch) // panika: uzavření již uzavřeného kanálu