package main import ( "fmt" ) func f(left chan<- int, right <-chan int) { left <- 1 + <-right } func main() { const n = 10000 var right chan int leftmost := make(chan int) left := leftmost /* equivalent to: var left chan int left = leftmost */ for i := 0; i < n; i++ { right = make(chan int) go f(left, right) left = right } go func(c chan<- int) { c <- 1 }(right) fmt.Println(<-leftmost) }