利用break 标签跳出for select循环

    技术2022-07-11  92

    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 */

     

    Processed: 0.011, SQL: 9