mirror of
https://github.com/crazybber/awesome-patterns.git
synced 2024-11-28 15:56:04 +03:00
25 lines
495 B
Go
25 lines
495 B
Go
package main
|
|
|
|
import "fmt"
|
|
|
|
// Generator func which produces data which might be computationally expensive.
|
|
func fib(n int) chan int {
|
|
c := make(chan int)
|
|
go func() {
|
|
for i, j := 0, 1; i < n; i, j = i+j, i {
|
|
c <- i
|
|
}
|
|
close(c)
|
|
}()
|
|
return c
|
|
}
|
|
|
|
func main() {
|
|
// fib returns the fibonacci numbers lesser than 1000
|
|
for i := range fib(1000) {
|
|
// Consumer which consumes the data produced by the generator, which further does some extra computations
|
|
v := i * i
|
|
fmt.Println(v)
|
|
}
|
|
}
|