Junior — Middle
Koje ponašanje se očekuje ako pokušate da zatvorite kanal koji je već ranije zatvoren?
sobes.tech АИ
Одговор од АИ
В Go попытка закрыть уже закрытый канал приводит к панике (panic).
Закрывать канал можно только один раз, чтобы сигнализировать о том, что больше не будет отправлено значений.
Если вызвать close(ch) повторно для одного и того же канала, программа аварийно завершится с ошибкой.
Пример:
ch := make(chan int)
close(ch) // корректно
close(ch) // panic: close of closed channel
Поэтому важно контролировать, что канал закрывается только один раз.