Канал Go передаёт типизированные значения между горутинами. Запись в закрытый канал паникует; чтение сначала отдаёт буфер, затем нулевое значение и ok=false.
Что такое каналы в Go? Виды каналов, что происходит при записи/чтении из закрытого канала?
Канал Go передаёт типизированные значения между горутинами. Запись в закрытый канал паникует; чтение сначала отдаёт буфер, затем нулевое значение и ok=false.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Канал Go передаёт типизированные значения между горутинами. Запись в закрытый канал паникует; чтение сначала отдаёт буфер, затем нулевое значение и ok=false.
Каналы бывают буферизованными и небуферизованными; тип может разрешать оба направления, только отправку или только чтение. Небуферизованная передача требует готового получателя. Операции с nil-каналом блокируются, close(nil) и повторное закрытие вызывают panic. Закрытие означает отсутствие новых отправок, а не удаление уже накопленных значений. Обычно закрывает канал сторона, которая управляет отправителями.