看到一个代码片段:
package main
import (
"fmt"
)
func main() {
origin,wait := make(chan int),make(chan struct{})
Processor(origin,wait)
for i:=2;i<10 ;i++ {
origin <- i
}
close(origin)
<-wait
}
func Processor(seq chan int,wait chan struct{}) {
go func() {
prime,ok := <- seq
// 结束
if !ok{
close(wait)
return
}
fmt.Println(prime)
out := make(chan int)
Processor(out,wait)
for num := range seq{
if num % prime!=0{
out<- num
}
}
close(out)
}()
}
补充说明:
要找出10000以内所有的素数,这里使用的方法是筛法,即从2开始每找到一个素数就标记所有能被该素数整除的所有数。直到没有可标记的数,剩下的就都是素数。
改为找出10以内的所有素数,怎么理解这段代码——具体是怎么跑的?一个个就把值筛出来了
这个代码还是很好理解的,给你加个注释: