Middle
Ako vyvolať paniku pri práci s kanálom? Čo sa deje pri operáciách s nil-kanálom a zatvoreným kanálom?
sobes.tech AI
Odpoveď od AI
V Go, k panike pri práci s kanálmi dochádza v týchto prípadoch:
- Odoslanie hodnoty na zatvorený kanál (
chan <- value) spôsobí paniku. - Zatvorenie už zatvoreného kanála (
close(chan)) spôsobí paniku.
Čo sa týka nil-kanálov:
- Operácie odoslania a prijatia s nil-kanálom sa navždy blokujú (deadlock), ale nespôsobujú paniku.
Príklad:
var ch chan int // nil-kanál
// <-ch // navždy blokuje
// ch <- 1 // navždy blokuje
ch = make(chan int)
close(ch)
// ch <- 1 // panika: odoslanie na zatvorený kanál
close(ch) // panika: zatvorenie už zatvoreného kanála