Sobes.tech
Назад к вопросам
Middle
5

Как вызвать панику при работе с каналом? Что происходит при операциях с nil-каналом и закрытым каналом?

Компании, где спрашивали
YadroYadro

Ответ от нейросети

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