这是一段求素数的代码,是可以正常运行的。但是当我把第14行的代码由break换成了return,代码运行会报错。不过虽然报错,也是能够先把正确结果打印出来再提示错误(见图片)。请问为什么使用了return
会报错,感觉在这段代码中break与return应该能起到相同的作用才对。请大佬们指教
package main
import "fmt"
func putNum(intChan chan int){
for i:=1;i<=80;i++{
intChan<-i
}
close(intChan)
}
func primeNum(intChan chan int,primeChan chan int,exitChan chan bool){
for {
var flag bool=true
v,ok:=<-intChan
if !ok{
break
}
for i:=2;i<v;i++{
if v%i==0{
flag=false
break
}
}
if flag{
primeChan<-v
}
}
exitChan<-true
}
func main(){
intChan:=make(chan int,800)
primeChan:=make(chan int,600)
exitChan:=make(chan bool,4)
go putNum(intChan)
for i:=1;i<=4;i++{
go primeNum(intChan,primeChan,exitChan)
}
go func(){
for i:=1;i<=4;i++{
<-exitChan
}
close(primeChan)
close(exitChan)
}()
for {
v,ok:=<-primeChan
if !ok{
break
}
fmt.Println(v)
}
}