Sobes.tech
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.