Sobes.tech
Назад к вопросам
Senior
10

Что такое каналы и как задать направление для канала?

Компании, где спрашивали
VKVK

Ответ от нейросети

sobes.tech AI

В 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

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