Как происходит передача сообщения от писателя к читателю в Go

«Как происходит передача сообщения от писателя к читателю в Go» — вопрос из категории Golang, который задают на 23% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В Go передача сообщений между горутинами осуществляется через каналы (channels). Каналы обеспечивают безопасную синхронизацию и обмен данными.

Пример:

ch := make(chan int) // создание канала

// Писатель
go func() {
    ch <- 42 // отправка значения
}()

// Читатель
value := <-ch // получение значения

Особенности:

  • Каналы могут быть буферизированными (make(chan int, N)) или небуферизированными
  • Операции отправки/получения блокируют горутину, пока другая сторона не будет готова
  • Каналы можно закрывать (close(ch)), что позволяет читателю определить конец данных
  • Можно использовать select для работы с несколькими каналами одновременно