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.