Back to questions
Yadro
Middle
6
Как вызвать панику при работе с каналом? Что происходит при операциях с nil-каналом и закрытым каналом?
Companies where asked
Answer from AI
sobes.tech 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 // panic: send on closed channel
close(ch) // panic: close of closed channel