Sobes.tech
Назад к вопросам
Junior — Middle
81

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

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

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

sobes.tech AI

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

Закрывать канал можно только один раз, чтобы сигнализировать о том, что больше не будет отправлено значений.

Если вызвать close(ch) повторно для одного и того же канала, программа аварийно завершится с ошибкой.

Пример:

ch := make(chan int)
close(ch)       // корректно
close(ch)       // panic: close of closed channel

Поэтому важно контролировать, что канал закрывается только один раз.