有老师能帮忙看看我的获取素数代码哪里有问题么,我只能取到一个素数3

reckless-huang · · 666 次点击
```go // flag := true放到循环里面,为啥我也不知道 // resultChan <- num 写入判断逻辑放到内层for循环外面,这个原来的判断逻辑有问题 func judgData(intChan chan int, resultChan chan int, exitChan chan bool, done func()) { defer done() time.Sleep(time.Millisecond * 1000) //time.Sleep(time.Second *1) for { flag := true num, ok := <-intChan if !ok { fmt.Println("已从intChan读取所有数据") break } for i := 2; i < num; i++ { if num%i == 0 { flag = false break } } if flag { resultChan <- num fmt.Printf("添加%v到resultChan\n", num) } } fmt.Println("协程执行完毕") exitChan <- true } ```
#5
更多评论
就很奇怪,协程的确都已经结束了,但是计算好像没有结束:screen
#1
wg传入进去是值传递副本,要么取地址 要么闭包方式共用外部wg
#2