| 12345678910111213141516171819202122232425262728293031 |
- // lazy_evaluation.go
- package main
- import (
- "fmt"
- )
- var resume chan int
- func integers() chan int {
- yield := make(chan int)
- count := 0
- go func() {
- for {
- yield <- count
- count++
- }
- }()
- return yield
- }
- func generateInteger() int {
- return <-resume
- }
- func main() {
- resume = integers()
- fmt.Println(generateInteger()) //=> 0
- fmt.Println(generateInteger()) //=> 1
- fmt.Println(generateInteger()) //=> 2
- }
|