Что такое канал и что он хранит?

Канал Go — типизированный механизм передачи значений между горутинами. Буферизированный канал хранит очередь значений до своей ёмкости, небуферизированный синхронизирует отправителя и получателя.

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

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

Канал Go — типизированный механизм передачи значений между горутинами. Буферизированный канал хранит очередь значений до своей ёмкости, небуферизированный синхронизирует отправителя и получателя.

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

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

Канал Go — типизированный механизм передачи значений между горутинами. Буферизированный канал хранит очередь значений до своей ёмкости, небуферизированный синхронизирует отправителя и получателя.

ch := make(chan int, 2)
ch <- 10
value := <-ch
_ = value

Отправляется значение соответствующего типа; для указателя копируется указатель, а не весь объект. Небуферизированная передача ждёт встречной операции. Из закрытого канала сначала читают накопленное, затем нулевое значение с ok=false. Отправка в закрытый канал вызывает panic, операции с nil-каналом блокируются.

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

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

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

Подробнее