Sobes.tech
Back to questions
Junior — Middle
83

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

Companies where asked
КасперскийКасперский

Answer from AI

sobes.tech AI

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

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

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

Пример:

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

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