Sobes.tech
Junior — Middle

როგორ განვახორციელოთ ინფორმაციის გაცვლა ორ goroutine-ს შორის Go ენის გამოყენებით?

sobes.tech AI

პასუხი 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 читает из него. Каналы обеспечивают безопасный обмен данными без необходимости использовать мьютексы или другие механизмы синхронизации.