Каналы Go передают типизированные значения и помогают синхронизировать горутины. Они бывают буферизированными и небуферизированными, двунаправленными и с ограниченным направлением.
Расскажи про каналы в Go.
Каналы Go передают типизированные значения и помогают синхронизировать горутины. Они бывают буферизированными и небуферизированными, двунаправленными и с ограниченным направлением.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Каналы Go передают типизированные значения и помогают синхронизировать горутины. Они бывают буферизированными и небуферизированными, двунаправленными и с ограниченным направлением.
Отправка в небуферизированный канал ждёт получателя; буфер позволяет временно накопить значения до своей ёмкости. select выбирает готовую операцию и часто используется вместе с context.Done.
Закрытие означает отсутствие новых отправок: range читает оставшееся и заканчивается. Закрывать обычно должен владелец отправки, после завершения producers. Каналы не исключают гонки автоматически, если через них передали указатель и продолжают менять общий объект без координации.