Расскажи про каналы в Go.

Каналы Go передают типизированные значения и помогают синхронизировать горутины. Они бывают буферизированными и небуферизированными, двунаправленными и с ограниченным направлением.

Короткий ответ

Что ответить на собеседовании

Каналы Go передают типизированные значения и помогают синхронизировать горутины. Они бывают буферизированными и небуферизированными, двунаправленными и с ограниченным направлением.

Подробный разбор

Ответ с пояснениями

Каналы Go передают типизированные значения и помогают синхронизировать горутины. Они бывают буферизированными и небуферизированными, двунаправленными и с ограниченным направлением.

Отправка в небуферизированный канал ждёт получателя; буфер позволяет временно накопить значения до своей ёмкости. select выбирает готовую операцию и часто используется вместе с context.Done.

Закрытие означает отсутствие новых отправок: range читает оставшееся и заканчивается. Закрывать обычно должен владелец отправки, после завершения producers. Каналы не исключают гонки автоматически, если через них передали указатель и продолжают менять общий объект без координации.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее