Junior — Middle
Jak odbywa się wymiana informacji między goroutines w Go?
sobes.tech AI
Odpowiedź od AI
W Go wymiana informacji między gorutynami odbywa się głównie za pomocą kanałów (channels). Kanały umożliwiają bezpieczne przesyłanie danych między gorutynami, zapewniając synchronizację i zapobiegając warunkom wyścigu.
Przykład użycia kanału:
ch := make(chan int)
// Wysyłanie danych w goroutine
go func() {
ch <- 42
}()
// Odbieranie danych w głównej goroutine
value := <-ch
fmt.Println(value) // Wyświetli 42
Kanały mogą być z buforem lub bez, co wpływa na zachowanie blokowania podczas wysyłania i odbierania danych. Ponadto, do wymiany można używać innych mechanizmów, takich jak wspólne zmienne z mutexami, ale kanały są głównym idiomatycznym sposobem komunikacji w Go.