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

Каким образом реализуется обмен сообщениями между отправителем и получателем данных в языке Go?

Компании, где спрашивали
КасперскийКасперский

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

sobes.tech AI

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

Канал создаётся с помощью функции make и может быть буферизированным или небуферизированным:

ch := make(chan int)        // небуферизированный канал
chBuf := make(chan int, 5)  // буферизированный канал с размером буфера 5

Отправка в канал:

ch <- 42  // отправить значение 42 в канал ch

Получение из канала:

value := <-ch  // получить значение из канала ch

Пример обмена сообщениями между двумя горутинами:

package main

import (
    "fmt"
    "time"
)

func main() {
    ch := make(chan string)

    go func() {
        ch <- "Привет от горутины"
    }()

    msg := <-ch
    fmt.Println(msg)
}

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