为了账号安全,请及时绑定邮箱和手机立即绑定

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

标签:
Go


坑,以下例子中,原本以为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博客作者暮色伊人的原创作品,如需转载,请注明出处,否则将追究法律责任


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消