package main
import "fmt"
import "log"
func main() {
fmt.Println(test())
}
func test() bool {
ch := make(chan int,30)
for i := 0; i < 30; i++ {
ch <- i
}
for {
select {
case d :=<- ch:
log.Printf("Executor received: %v", d)
default:
break
}
}
return true
}
该代码不能跳出for循环,不能打印true,所以要再for循环外加代码块,在select里面 break代码块就可以跳出for循环了loop:
loop:
for {
select {
case d :=<- ch: // 取数据
log.Printf("Executor received: %v", d)
default:
close(ch)
break loop
}
}
return true
