golangbreak语句可以break掉select,switch,for

坑,以下例子中,原本以为close掉done channel后,循环会退出。但事实上会进入死循环

成都创新互联公司是一家专注于网站设计、网站制作与策划设计,噶尔网站建设哪家好?成都创新互联公司做网站,专注于网站建设十余年,网设计领域的专业建站公司;建站业务涵盖:噶尔等地区。噶尔做网站价格咨询:18980820575

for {
        select {
        case packet := <-s.avPacketChan:
            s.sendPacket(packet)
        case  <-s.done: //终止channel
            break
        }
    }

原因:
[A "break" statement terminates execution of the innermost "for", "switch" or "select" statement.

官方文档](https://golang.org/ref/spec#Break_statements)
BreakStmt = "break" [ Label ] .
If there is a label, it must be that of an enclosing "for", "switch" or "select" statement, and that is the one whose execution terminates (§For statements, §Switch statements, §Select statements).

L:
  for i < n {
      switch i {
      case 5:
          break L // 从L标签处开始执行
      }
  }

本文标题:golangbreak语句可以break掉select,switch,for
当前链接:http://bzwzjz.com/article/ijcjhi.html

其他资讯

Copyright © 2007-2020 广东宝晨空调科技有限公司 All Rights Reserved 粤ICP备2022107769号
友情链接: 网站建设公司 网站制作 网站设计公司 网站设计制作报价 成都网站建设 企业手机网站建设 企业网站制作 商城网站建设 成都网站制作 成都网站设计 移动网站建设 成都网站设计 成都网站设计公司 成都网站建设公司 成都网站设计 重庆电商网站建设 外贸网站建设 成都网站设计 企业网站建设公司 成都网站建设 成都企业网站制作 品牌网站建设