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