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.