github.com/l3x/learn-fp-go@v0.0.0-20171228022418-7639825d0b71/1-functional-fundamentals/ch01-pure-fp/02_fib/src/fibonacci/channel.go (about)

     1  package fibonacci
     2  
     3  func Channel(ch chan int, counter int) {
     4  	n1, n2 := 0, 1
     5  	for i := 0; i < counter; i++ {
     6  		ch <- n1
     7  		n1, n2 = n2, n1 + n2
     8  	}
     9  	close(ch)
    10  }
    11  
    12  func FibChanneled(n int) int {
    13  	n += 1
    14  	ch := make(chan int)
    15  	go Channel(ch, n)
    16  	i := 0; var result int
    17  	for num := range ch {
    18  		result = num
    19  		i++
    20  	}
    21  	return result
    22  }