Sobes.tech
Назад к вопросам
Senior
2

Каков будет результат записи в закрытый канал? Дедлок, паника или операция записи вернёт ошибку?

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

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

sobes.tech AI

В Go запись в закрытый (closed) канал приводит к панике (panic).

Если попытаться записать значение в канал, который уже закрыт, runtime вызывает panic с сообщением "send on closed channel".

Пример:

ch := make(chan int)
close(ch)
ch <- 1 // panic: send on closed channel

Таким образом, операция записи в закрытый канал не возвращает ошибку и не блокируется — она сразу вызывает панику. Чтобы избежать этого, нужно гарантировать, что запись происходит только в открытый канал, например, используя дополнительные флаги или синхронизацию.