Типы каналов?

Junior
868 просмотров
AFK Offer AI

Три типа каналов в Go:

// 1. Двунаправленный (по умолчанию)
ch := make(chan int)

// 2. Только для отправки func producer(ch chan<- int) { ch <- 42 }

// 3. Только для чтения func consumer(ch <-chan int) { val := <-ch }

Также каналы делятся по буферизации:

  • Небуферизованный make(chan int) — отправитель блокируется пока получатель не прочитает
  • Буферизованный make(chan int, 100) — отправитель блокируется только когда буфер полон
Направленные каналы (chan<- / <-chan) — это compile-time ограничение. Двунаправленный канал неявно конвертируется в направленный, но не наоборот.

Следующий вопрос

Что такое message queue?