package main import . "fmt" import "os" import "strconv" func iter(b int, c chan int) { for i := 0; i < b; i++ { c <- i } } func main() { n, _ := strconv.Atoi(os.Args[1]) a := make(chan int) b := make(chan int) /* Queste due goroutine scrivono i primi n interi nei canali a e b. La select successiva legge i 2n valori risultanti e li stampa. */ go iter(n, a) go iter(n, b) for i := 0; i < 2 * n; i++ { select { case x := <- a: Println(x) case y := <- b: Println(y) } } }