Назад к вопросам
Avito
Junior — Middle
77
Каким образом реализовать обмен информацией между двумя горутинами в языке Go?
Компании, где спрашивали
Кадровое агентство 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 читает из него. Каналы обеспечивают безопасный обмен данными без необходимости использовать мьютексы или другие механизмы синхронизации.