Junior — Middle
Come avviene lo scambio di informazioni tra le goroutine in Go?
sobes.tech AI
Risposta dell'AI
In Go, lo scambio di informazioni tra goroutine avviene principalmente tramite canali (channels). I canali consentono di trasmettere dati in modo sicuro tra goroutine, garantendo sincronizzazione e prevenendo condizioni di gara.
Esempio di utilizzo di un canale:
ch := make(chan int)
// Invio di dati in una goroutine
go func() {
ch <- 42
}()
// Ricezione di dati nella goroutine principale
value := <-ch
fmt.Println(value) // Stampa 42
I canali possono essere con buffer o senza buffer, influenzando il comportamento di blocco durante l’invio e la ricezione dei dati. Inoltre, per lo scambio, si possono usare altri meccanismi come variabili condivise con mutex, ma i canali sono il modo idiomatico principale di comunicazione in Go.