Sobes.tech
Назад к вопросам
Junior — Middle
77

Каким образом реализовать обмен информацией между двумя горутинами в языке Go?

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

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

sobes.tech AI

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

Пример обмена через канал:

package main

import (
    "fmt"
)

func sender(ch chan<- string) {
    ch <- "Привет от sender"
}

func receiver(ch <-chan string) {
    msg := <-ch
    fmt.Println("Получено сообщение:", msg)
}

func main() {
    ch := make(chan string)
    go sender(ch)
    go receiver(ch)

    // Ждем, чтобы горутины завершились
    var input string
    fmt.Scanln(&input)
}

Здесь sender отправляет строку в канал, а receiver читает из него. Каналы обеспечивают безопасный обмен данными без необходимости использовать мьютексы или другие механизмы синхронизации.