Read and Write Fibonacci series to Channel in Golang
The main function has two unbuffered channels ch and quit. Inside fibonacci function the select statement blocks until one of its cases is ready.
Example
package main
import (
"fmt"
)
func fibonacci(ch chan int, quit chan bool) {
x, y := 0, 1
for {
select {
case ch <- x: // write to channel ch
x, y = y, x+y
case <-quit:
fmt.Println("quit")
return
}
}
}
func main() {
ch := make(chan int)
quit := make(chan bool)
n := 10
go func(n int) {
for i := 0; i < n; i++ {
fmt.Println(<-ch) // read from channel ch
}
quit <- false
}(n)
fibonacci(ch, quit)
}
0
1
1
2
3
5
8
13
21
34
Most Helpful This Week
How to convert Boolean Type to String in Go?
Print inverted full pyramid using star
How to append struct member dynamically using Empty Interface?
Golang program for implementation of Interpolation Search
Modernizing Legacy Applications: Critical Tips for Organizational Upgrades
3 Different Examples - How State Works in React?