Канал Go передаёт типизированные значения и синхронизирует горутины. Небуферизированная передача требует готового получателя, а буфер позволяет временно хранить несколько значений.
Какова цель 'канала' в Go и как он используется для общения между горутинами?
Канал Go передаёт типизированные значения и синхронизирует горутины. Небуферизированная передача требует готового получателя, а буфер позволяет временно хранить несколько значений.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Канал Go передаёт типизированные значения и синхронизирует горутины. Небуферизированная передача требует готового получателя, а буфер позволяет временно хранить несколько значений.
Отправляют через ch <- value, получают через value := <-ch. Закрытие сообщает об окончании потока: range завершается после чтения накопленных значений. Отправка в закрытый канал вызывает panic; nil-канал блокирует операции. Обычно закрывает канал отправитель, знающий, что новых значений не будет. Для выбора между данными и отменой используют select.