Sobes.tech
Junior — Middle

Come avviene l'interazione tra le goroutine in Go?

sobes.tech AI

Risposta dell'AI

In Go, l'interazione tra goroutine avviene tramite i canali (channels). I canali consentono di trasferire dati in modo sicuro tra goroutine e di sincronizzarle.

Punti principali:

  • Il canale viene creato con make(chan Tipo).
  • Invio nel canale: ch <- valore.
  • Ricezione dal canale: valore := <-ch.
  • I canali possono essere con buffer o senza buffer.

Esempio:

func main() {
    ch := make(chan string)

    go func() {
        ch <- "ciao dalla goroutine"
    }()

    msg := <-ch
    fmt.Println(msg)
}

In questo modo, i canali garantiscono un'interazione sicura e comoda tra goroutine parallele senza la necessità di usare mutex o altri meccanismi di blocco.