Sobes.tech
Junior — Middle

Jak realizowane jest wymienianie wiadomości między nadawcą a odbiorcą danych w języku Go?

sobes.tech AI

Odpowiedź od AI

W języku Go wymiana wiadomości między nadawcą a odbiorcą danych odbywa się za pomocą kanałów (channels). Kanały pozwalają goroutine bezpiecznie wymieniać dane, synchronizując ich wykonanie.

Kanał tworzy się za pomocą funkcji make i może być z buforem lub bez:

ch := make(chan int)        // kanał bez bufora
chBuf := make(chan int, 5)  // kanał z buforem o rozmiarze 5

Wysyłanie do kanału:

ch <- 42  // wysłać wartość 42 do kanału ch

Odbieranie z kanału:

value := <-ch  // pobrać wartość z kanału ch

Przykład wymiany wiadomości między dwoma goroutine:

package main

import (
    "fmt"
    "time"
)

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

    go func() {
        ch <- "Cześć od goroutine"
    }()

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

W ten sposób kanały w Go zapewniają bezpieczną i wygodną komunikację między równoległymi strumieniami wykonania.