主页 > 知识库 > golang 跳出多重循环的高级break用法说明

golang 跳出多重循环的高级break用法说明

热门标签:官渡电销外呼管理系统怎么收费 江苏呼叫中心外呼系统有效果吗 利用地图标注位置 400开头电话怎样申请 地图区域图标注后导出 赤峰电销 贵州电话智能外呼系统 杭州人工智能电销机器人费用 谷歌美发店地图标注

平时写代码过程中难免会遇到循环嵌套的操作,这时候最头疼的就是在break的时候需要一层一层的退出或者使用goto语句,golang有一种和goto方式类似但是goto方式更友好并且更易读的高级break用法,就是在循环外使用label标记退出哪一层循环的方式。

示例代码:

I:
 for i := 0; i  2; i++ {
 for j := 0; j  5; j++ {
 if j == 2 {
 break I
 }
 fmt.Println("hello")
 }
 fmt.Println("hi")
 }

程序的运行结果:

hello

hello

补充:golang for的select体中如何break外层循环

问题

默认在select中break是只跳脱了select体,而不是结束for循环

for {
 select{
 case -tick.C:
  //do someting
 case - stop:
  break //break的不是for循环, 而是跳脱select,执行doNext()
 }
 doNext()
}

如何在for的select体中break到外层循环呢?

1.解决办法

1.1 使用带标签的break

LOOP: for {
 select{
 case -tick.C:
  //do someting
 case - stop:
  break LOOP//break的for循环,跳转执行doOther()
 }
 doNext()
}
doOther()

等价于C的goto,但是又不同。比如这里for循环前的标签,对于如果使用goto LOOP会导致再次执行循环。但是golang的break到这里是跳出循环,执行循环之后的操作

1.2 使用return

for {
 select{
 case -tick.C:
  //do someting
 case - stop:
  return //干净利落,适合退出goroutin的场景
 }
 doNext()
}
doOther()

1.3 使用标志

isStop := false
for {
 select{
 case -tick.C:
  //do someting
 case - stop:
  isStop = true//干净利落,适合退出goroutin的场景
  break
 }
 if isStop {
 break
 }
 doNext()
}
doOther()

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。如有错误或未考虑完全的地方,望不吝赐教。

您可能感兴趣的文章:
  • Golang的循环中break和continue语句的用法讲解
  • golang 跳出for循环操作
  • python/golang实现循环链表的示例代码
  • 汇编分析 Golang 循环(推荐)
  • 详解golang避免循环import问题(“import cycle not allowed”)

标签:河池 松原 宜春 鹰潭 保定 武汉 泰安 黔西

巨人网络通讯声明:本文标题《golang 跳出多重循环的高级break用法说明》,本文关键词  golang,跳出,多重,循环,的,;如发现本文内容存在版权问题,烦请提供相关信息告之我们,我们将及时沟通与处理。本站内容系统采集于网络,涉及言论、版权与本站无关。
  • 相关文章
  • 下面列出与本文章《golang 跳出多重循环的高级break用法说明》相关的同类信息!
  • 本页收集关于golang 跳出多重循环的高级break用法说明的相关信息资讯供网民参考!
  • 推荐文章