Middle+
Za jakých podmínek bude čtení z kanálu navždy zablokováno? Co se stane při zápisu do nil-kanálu? Při zápisu do uzavřeného kanálu?
sobes.tech AI
Odpověď od AI
-
Čtení z kanálu bude navždy zablokováno, pokud je kanál prázdný a nikdo neplánuje do něj psát (například, všichni odesílatelé jsou uzavřeni nebo chybí).
-
Zápis do nil-kanálu (kanál roven nil) je vždy navždy zablokován, protože nil-kanál není inicializován a nemůže přijímat data.
-
Zápis do uzavřeného kanálu způsobí v Go paniku (panic), protože je to zakázáno a považuje se to za chybu za běhu.
Příklad:
var ch chan int // nil-kanál
// <-ch // čtení z nil-kanálu je navždy zablokováno
// ch <- 1 // zápis do nil-kanálu je navždy zablokován
ch = make(chan int)
close(ch)
// ch <- 2 // panic: odeslání na uzavřený kanál