Назад к вопросам
Касперский
Junior — Middle
81
Какое поведение ожидается, если попытаться закрыть канал, который уже был закрыт ранее?
Компании, где спрашивали
Ответ от нейросети
sobes.tech AI
В Go попытка закрыть уже закрытый канал приводит к панике (panic).
Закрывать канал можно только один раз, чтобы сигнализировать о том, что больше не будет отправлено значений.
Если вызвать close(ch) повторно для одного и того же канала, программа аварийно завершится с ошибкой.
Пример:
ch := make(chan int)
close(ch) // корректно
close(ch) // panic: close of closed channel
Поэтому важно контролировать, что канал закрывается только один раз.