Sobes.tech
Junior — Middle

Jak zaimplementować wymianę informacji między dwoma goroutines w języku Go?

sobes.tech AI

Odpowiedź od AI

W Go wymiana informacji między dwoma goroutines zwykle realizowana jest za pomocą kanałów (channels). Kanały umożliwiają bezpieczne przesyłanie danych między goroutines i ich synchronizację.

Przykład wymiany przez kanał:

package main

import (
    "fmt"
)

func sender(ch chan<- string) {
    ch <- "Cześć od sendera"
}

func receiver(ch <-chan string) {
    msg := <-ch
    fmt.Println("Otrzymana wiadomość:", msg)
}

func main() {
    ch := make(chan string)
    go sender(ch)
    go receiver(ch)

    // Czekanie na zakończenie goroutines
    var input string
    fmt.Scanln(&input)
}

Tutaj sender wysyła ciąg znaków do kanału, a receiver odczytuje go. Kanały zapewniają bezpieczną wymianę danych bez konieczności używania mutexów lub innych mechanizmów synchronizacji.