这期内容当中小编将会给大家带来有关如何在golang中利用break跳出多重循环,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。
平时写代码过程中难免会遇到循环嵌套的操作,这时候最头疼的就是在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跳出多重循环了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注亿速云行业资讯频道。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。