Что можно делать с закрытым каналом?

Middle
1.3k просмотров
AFK Offer AI

Читать — вернёт оставшиеся данные из буфера, потом zero value. Проверять через v, ok := <-chok == false значит канал закрыт и пуст.

Использовать в range — цикл завершится. Использовать в select — ветка сработает (вернёт zero value). Нельзя: писать (panic), закрывать повторно (panic).

Паттерн «broadcast»: закрытие канала разблокирует всех читателей одновременно — поэтому context.Done() работает через закрытие канала.

Следующий вопрос

Как работает cross-compilation?