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.