继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

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

holdtom
关注TA
已关注
手记 1885
粉丝 240
获赞 992


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

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标签处开始执行

      }

  }

©著作权归作者所有:来自51CTO博客作者暮色伊人的原创作品,如需转载,请注明出处,否则将追究法律责任


打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP