golang实现generator
发布时间:2020-12-16 18:10:39 所属栏目:大数据 来源:网络整理
导读:python和nodejs都可以是使用yield关键字,实现一个generator。 python版: def generator () : n = 0 while True : yield n n = n+ 1 for i in generator(): if i 10 : print(i) else : break nodejs版 function * generator () { let n = 0 while ( true )
python和nodejs都可以是使用yield关键字,实现一个generator。
def generator():
n = 0
while True:
yield n
n = n+1
for i in generator():
if i < 10:
print(i)
else:
break
function *generator() {
let n = 0
while(true) {
yield n
n = n+1
}
}
for (i of generator()) {
if (i < 10) {
console.log(i)
}else {
break
}
}
但是golang没有yield关键字,如何实现使用golang实现一个类似上面的generator呢? package main
import "fmt"
func generator() chan int {
c := make(chan int)
n := 0
go func() {
for {
c <- n
n = n + 1
}
}()
return c
}
func main() {
for i := range generator() {
if i == 5 {
break
}
fmt.Println(i)
}
}
generator 直接返回了一个channel (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |