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 跳出for循环操作
执行以下代码,发现无法跳出for循环: func SelectTest() { i := 0 for { select { case <-time.After(time.Second * time.Duration(2)): i++ if i == 5 { fmt.Println("跳出for循环") } } fmt.Println("for循环内 i=", i) } fmt.Println("for循环外") } 解决办法有两个: 1.使
-
Golang的循环中break和continue语句的用法讲解
Go语言break语句 在Go编程语言中的break语句有以下两种用法: break语句用于在循环立即终止,程序控制继续下一个循环语句后面语句. 它可用于终止在switch语句的情况(case). 如果你正在使用嵌套循环(即,一个循环在另一个循环中),break语句将停止最内层循环的执行,并开始执行的下一行代码的程序段之后. 语法 在Go break语句的语法如下: break; 流程图: 例子: 复制代码 代码如下: package main import "fmt" func ma
-
python/golang实现循环链表的示例代码
循环链表就是将单链表的末尾指向其头部,形成一个环.循环链表的增删操作和单链表的增删操作 区别不大.只是增加时,需要考虑空链表增加第一个节点的特殊情况:删除时需考虑删除节点是头/尾节点,和链表中只有一个节点的特殊情况. golang实现: type Node struct { value int next *Node } type Circle struct { tail *Node lenth int } // 增加节点: func (c *Circle) add(value int) { ne
-
详解golang避免循环import问题(“import cycle not allowed”)
前言 golang不允许循环import package ,如果检测到 import cycle ,会在编译时报错,通常import cycle是因为设计错误或包的规划问题. 以下面的例子为例,package a依赖package b,同事package b依赖package a package a import ( "fmt" "github.com/mantishK/dep/b" ) type A struct { } func (a A) PrintA() {
-
汇编分析 Golang 循环(推荐)
女主宣言 今天小编为大家分享一篇关于Golang循环汇编分析的文章,文章中介绍了golang循环的汇编层面的处理,通过分析,我们可以更了解循环的实现.希望能对大家有所帮助. PS:丰富的一线技术.多元化的表现形式,尽在" 3 60云计算 ",点关注哦! 循环是编程中很强大的一个概念,而且非常容易处理. 但是,必须将其翻译成机器可理解的基本指令. 它的编译方式也可能影响标准库中的其他组件. 让我们开始分析一下范围循环 . 1循环汇编 范围循环可以迭代数组,切片或通道.下面函数展示了,对分
-
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.
-
javaScript如何跳出多重循环break、continue
先来说说break和continue之间的区别 摘自JavaScript高级程序设计 for(var i=0;i<10;i++){ if(i>5){ break; } } console.log(i); ---6 •当i=5和10的时候,会执行到break,并退出循环 for(var i=1;i<10;i++){ if(i>5){ continue; } num++; } console.log(num); ---4 var num=0; for(var i=1;i<10;i
-
Java循环结构之多重循环及continue break
目录 前言 for循环案例 continue break return 前言 含义: (1)多重循环指一个循环语句的循环体中再包含循环语句,又称嵌套循环. (2)循环语句内可以嵌套多层循环. (3)不同的循环语句可以相互嵌套. 语法格式: while循环: while(循环条件1){ 循环语句1 while(循环条件2){ 循环语句2 } } do while循环: do{ 循环体 do{ 循环体 }while(循环条件); }while(循环条件); for循环: for(表达式1;表达式2;
-
Python跳出多重循环的方法示例
方法1:自定义异常 # -*- coding:utf-8 -*- """ 功能:python跳出循环 """ # 方法1:自定义异常 class Getoutofloop(Exception): pass try: for i in range(5): for j in range(5): if i == j == 2: raise Getoutofloop() else: print i, '----', j except Getoutoflo
-
PHP中使用break跳出多重循环代码实例
复制代码 代码如下: $array = array(1,2,3,4,5,6); for($i=0;$i<10;$i++){ foreach($array as $key) { echo $key; if($key==2){ break 2; } } }
-
Python中断多重循环的思路总结
I. 跳出单循环 不管是什么编程语言,都有可能会有跳出循环的需求,比如枚举时,找到一个满足条件的数就终止.跳出单循环是很简单的,比如: for i in range(10): if i > 5: print i break 然而,我们有时候会需要跳出多重循环,而break只能够跳出一层循环,比如: for i in range(10): for j in range(10): if i+j > 5: print i,j break 这样的代码并非说找到一组 i+j > 5就停止,而是连续
-
Python中断多重循环的几种方式详解
这篇文章主要介绍了Python中断多重循环的几种方式详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 I. 跳出单循环 不管是什么编程语言,都有可能会有跳出循环的需求,比如枚举时,找到一个满足条件的数就终止.跳出单循环是很简单的,比如 for i in range(10): if i > 5: print i break 然而,我们有时候会需要跳出多重循环,而break只能够跳出一层循环,比如 for i in range(10): for
-
Java如何跳出当前多重循环你知道吗
目录 Java是如何跳出当前多重循环? 不建议使用 建议使用 总结 Java是如何跳出当前多重循环? 不建议使用 在最外层前面加一个标记A,然后用break A;可以跳出多重循环因为它不会让你的程序变得更加优雅,很多时候起到相反的作用.例如,万一别人把这个标识符定义在你找不到的地方,容易让代码阅读起来很费解. (Java中支持带标签的break和continue语句,作用有点类似于C和C++的goto语句) 在多层循环体外写 标识符A: 来跳出循环. 代码如下: public static vo
-
Python循环语句之break与continue的用法
Python break 语句 Python break语句,就像在C语言中,打破了最小封闭for或while循环. break语句用来终止循环语句,即循环条件没有False条件或者序列还没被完全递归完,也会停止执行循环语句. break语句用在while和for循环中. 如果您使用嵌套循环,break语句将停止执行最深层的循环,并开始执行下一行代码. Python语言 break 语句语法: break 流程图: 实例: #!/usr/bin/python for letter in 'Pyt
-
javacript使用break内层跳出外层循环分析
本文实例分析了javacript使用break内层跳出外层循环的用法.分享给大家供大家参考.具体分析如下: 与php不同,javascript中循环跳出break,需要添加额外的标签.以"百钱买百鸡"为例(搜索张丘建,百钱买百鸡).如果需要算出全部,则是下面的代码: 复制代码 代码如下: <html> <head> </head> <body> <script type="text/javascript">
随机推荐
- 在AngularJS中如何使用谷歌地图把当前位置显示出来
- node.js使用nodemailer发送邮件实例
- jQuery UI Draggable + Sortable 结合使用(实例讲解)
- python的pdb调试命令的命令整理及实例
- Python基于回溯法子集树模板解决0-1背包问题实例
- js实现的GridView即表头固定表体有滚动条且可滚动
- 探讨如何把session存入数据库
- PHP使用Mysql事务实例解析
- Bootstrap fileinput组件封装及使用详解
- 深入浅出MyBatis中映射文件和实体类的关联性
- 文本框点击时文字消失,失去焦点时文字出现
- javascript使用activex控件的代码
- C# Winform使用扩展方法实现自定义富文本框(RichTextBox)字体颜色
- 深入解读Android的内部进程通信接口AIDL
- python3 property装饰器实现原理与用法示例
- 易语言识别语音的方法
- Linux下搭建Spark 的 Python 编程环境的方法
- 基于MATLAB和Python实现MFCC特征参数提取
- 利用rest framework搭建Django API过程解析
- python实现单链表中删除倒数第K个节点的方法