package main import . "fmt" func prod(c chan func()) { f := <- c f() c <- nil } func main() { c := make(chan func()) /* Qui eseguiamo in parallelo una goroutine che legge da c una funzione anonima e la esegue. */ go prod(c) x := 0 /* Ora inviamo attraverso c una chiusura lessicale che si riferisce a x. */ c <- func() { x++ } /* Aspettiamo che la goroutine sia terminata. */ <- c Println(x) }