Назад к вопросам
Junior — Middle
80
Каким образом происходит взаимодействие между горутинами в языке Go?
Компании, где спрашивали
IDT
Астрал-Софт
Ответ от нейросети
sobes.tech AI
В языке Go взаимодействие между горутинами происходит преимущественно через каналы (channels). Каналы позволяют безопасно передавать данные между горутинами, обеспечивая синхронизацию и обмен сообщениями.
Основные моменты:
- Канал создаётся с помощью
make(chan Type). - Отправка данных в канал блокирует отправителя, если канал заполнен (для буферизированных) или если нет получателя.
- Получение из канала блокирует получателя, если канал пуст.
Пример взаимодействия:
dataCh := make(chan int)
go func() {
dataCh <- 42 // отправка значения в канал
}()
value := <-dataCh // получение значения из канала
fmt.Println(value) // 42
Таким образом, каналы позволяют горутинам обмениваться данными и синхронизироваться без использования явных блокировок.