github.com/packtpublishing/learning-functional-programming-in-go@v0.0.0-20230130084745-8b849f6d58c4/Chapter01/02_fib/03_channel.go (about)

     1  package fib
     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 += 2
    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  }
    23  
    24  
    25