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

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

Короткий ответ

Что ответить на собеседовании

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

Подробный разбор

Ответ с пояснениями

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

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее