Sobes.tech
Back to questions
Junior — Middle
81

Каким образом происходит взаимодействие между горутинами в языке Go?

Companies where asked
IDT
Астрал-Софт

Answer from AI

sobes.tech AI

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

Основные моменты:

  • Канал создаётся с помощью make(chan Type).
  • Отправка данных в канал блокирует отправителя, если канал заполнен (для буферизированных) или если нет получателя.
  • Получение из канала блокирует получателя, если канал пуст.

Пример взаимодействия:

dataCh := make(chan int)
go func() {
    dataCh <- 42 // отправка значения в канал
}()
value := <-dataCh // получение значения из канала
fmt.Println(value) // 42

Таким образом, каналы позволяют горутинам обмениваться данными и синхронизироваться без использования явных блокировок.