python中的生成器可以大大节省内存,golang中没有内置生成器,但可以通过channel实现。方法如下,同样非常简单。
package main
import (
"fmt"
)
//模拟生成器
func generator(c chan int) {
for i := 0; i < 5; i++ {
c <- i
}
close(c) //生成结束后关闭channel
}
func main() {
var c chan int
c = make(chan int)
go generator(c)
//遍历生成器
for i := range c {
fmt.Printf("You say: %d\n", i)
}
}