Проверяет понимание жизненного цикла каналов и базовых правил конкурентности в Go.
Если попытаться записать в уже закрытый канал, программа упадёт с panic. Закрывать канал должен только отправитель, и только тогда, когда он уверен, что больше записей не будет.
В Go закрытие канала — это сигнал получателям, что новых данных больше не будет.
После close(ch):
чтение из канала возможно и безопасно;
запись в канал приводит к panic: send on closed channel.
Почему так сделано:
канал — это средство коммуникации, а не контейнер;
закрытие означает «поток данных завершён»;
запись после завершения — логическая ошибка.
Правила хорошего тона:
Канал закрывает только отправитель, а не получатель.
Канал закрывается один раз.
Если отправителей несколько — канал не закрывают вообще, а используют отдельный сигнал остановки (context, done channel).
Вывод: закрытие канала — это ответственность стороны, которая управляет потоком данных.