Какие типы каналов бывают?

В Go (Golang) канал (channel) — это тип данных, который используется для передачи значений между горутинами и синхронизации их работы.

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

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

В Go (Golang) канал (channel) — это тип данных, который используется для передачи значений между горутинами и синхронизации их работы.

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

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

В Go (Golang) канал (channel) — это тип данных, который используется для передачи значений между горутинами и синхронизации их работы.

Каналы обеспечивают безопасный обмен данными и позволяют организовать коммуникацию между параллельными потоками выполнения.

Как создать канал и задать направление

Каналы бывают трех видов по направлению:

  • Двунаправленный канал — можно и отправлять, и получать значения.
  • Только для отправки — канал, в который можно только отправлять данные.
  • Только для получения — канал, из которого можно только получать данные.

Пример создания канала:

ch := make(chan int) // двунаправленный канал

Задание направления канала при объявлении функции или переменной:

func send(ch chan<- int) { // только отправка
    ch <- 42
}

func receive(ch <-chan int) { // только получение
    val := <-ch
    fmt.Println(val)
}

Направление канала задается с помощью стрелок:

  • chan<- T — канал только для отправки значений типа T
  • <-chan T — канал только для получения значений типа T

Это помогает ограничить использование канала и избежать ошибок в коде.

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

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

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

Подробнее