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