Sobes.tech
Junior — Middle

Jak je realizována výměna zpráv mezi odesílatelem a příjemcem dat v jazyce Go?

sobes.tech AI

Odpověď od AI

V jazyce Go se výměna zpráv mezi odesílatelem a příjemcem dat realizuje pomocí kanálů (channels). Kanály umožňují goroutinám bezpečně si vyměňovat data a synchronizovat jejich provádění.

Kanál se vytváří pomocí funkce make a může být s bufferem nebo bez:

ch := make(chan int)        // kanál bez bufferu
chBuf := make(chan int, 5)  // kanál s bufferem o velikosti 5

Odeslání do kanálu:

ch <- 42  // odeslat hodnotu 42 do kanálu ch

Přijetí z kanálu:

value := <-ch  // získat hodnotu z kanálu ch

Příklad výměny zpráv mezi dvěma goroutinami:

package main

import (
    "fmt"
    "time"
)

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

    go func() {
        ch <- "Ahoj od gorutiny"
    }()

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

Tímto způsobem kanály v Go zajišťují bezpečnou a pohodlnou komunikaci mezi paralelními běhovými proudy.