Middle
Как да предизвикаме паника при работа с канал? Какво се случва при операции с nil-канал и затворен канал?
sobes.tech AI
Отговор от AI
В Go паника при работа с канали възниква в следните случаи:
- Изпращане на стойност към затворен канал (
chan <- value) причинява паника. - Затваряне на вече затворен канал (
close(chan)) причинява паника.
Що се отнася до nil-каналите:
- Операциите за изпращане и получаване с nil-канал блокират завинаги (deadlock), но не причиняват паника.
Пример:
var ch chan int // nil-канал
// <-ch // блокира завинаги
// ch <- 1 // блокира завинаги
ch = make(chan int)
close(ch)
// ch <- 1 // паника: изпращане към затворен канал
close(ch) // паника: затваряне на вече затворен канал