package main
import (
"fmt"
"time"
)
func main() {
strChan := make(chan int, 1)
n := 0
// 生产者不停的生产,如果通道有数据,就会把消费者唤醒
go func() {
for {
fmt.Println("loop")
time.Sleep(time.Second)
n++
if n%5 > 2 {
strChan <- n
}
if n > 10 {
strChan <- -1
break
}
}
}()
// 消费者
ForBreak:
for {
select {
// 如果没有信息到来,则会阻塞到select上
case data := <-strChan:
fmt.Println(data)
if data == -1 {
break ForBreak
}
}
fmt.Println("for loop")
}
fmt.Println("end")
}
/*
loop
loop
loop
loop
3
for loop
loop
4
for loop
loop
loop
loop
loop
8
for loop
loop
9
for loop
loop
-1
end
*/