Sobes.tech
Back to questions
Middle+
6

Как обмениваться данными между горутинами?

Companies where asked
МВидео/эльдорадо

Answer from AI

sobes.tech AI

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

Пример использования канала для передачи данных:

package main

import (
    "fmt"
    "time"
)

func worker(ch chan string) {
    time.Sleep(time.Second)
    ch <- "данные от горутины"
}

func main() {
    ch := make(chan string)
    go worker(ch)
    msg := <-ch
    fmt.Println(msg)
}

В этом примере главная горутина создает канал ch и запускает worker в отдельной горутине. worker отправляет строку в канал, а главная горутина получает её, синхронизируя обмен.

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