Go语言之continue/break label

ZhDavis · · 2268 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

转发自自己的公众号(灰子学技术)

原文链接:https://mp.weixin.qq.com/s/kjGZsMJJdpOJbxlC1gs29w

一、写在前面的话:

最近碰到了,Go语言一个比较有趣的语法continue label和break label,这种语法C/C++却没有,但是却有与之类似的goto。不过C/C++中一般不喜欢也不推荐使用goto,原因是goto语句跳来跳去,很容易将代码的可读性降低,并且很容易出错,所以C/C++都不推荐使用goto语句。

至于Go为何保留goto语句,想来是因为goto语句的另外一件好处吧,就是对深层次的函数调用或者递归调用,可以直接跳出来。

二、内容介绍

本文提到的continue label和break label于goto语句有些类似,但是两者使用却不相同。

continue和break一般针对的都是使用它们最近的循环语句,用来终端后续操作或者中断整个循环。

下面是continue和break的使用例子:

 

 

 

在一层循环里面,continue label和break label于上面的continue和break并没有区别,执行的结果也是一样的,continue label用来中断循环的本次操作,break label用于中断本次循环。

 

 

 

 

在二次循环以上,break和break label的区别就显现出来了,break会中断本次循环并且继续之后循环之后的语句。break label 不单单会终止本次循环,还会跳转到label处,如此以来break label所在的那层循环之后的代码也不会被执行到。

 

在二次循环之中,continue和continue label的区别也比较明显,continue只是中断循环的本一次操作,后续循环语句都会继续执行。continue label则是在内部循环的那一次操作终止之后,立马跳到label处继续上一层的下一次循环操作,而continue所在的那层循环之外的语句都会被跳过,这也就是为什么Skip :index: i 一致没有打印出来的原因。

 

三、总结概括

综上所述,continue label 是终止它所归属的最内循环的当前循环次数,并且跳转到label处继续执行,它所对应循环之后的那部分code不会被执行到。

break label是终止它所归属的最内循环整个循环,然后跳到label处开始执行,它所对一个的循环之后的那部分code不会被执行。

continue是终止执行它所归属的最内层循环的当前次数,并且继续执行 该循环的后续操作,该循环之外的后续代码也会继续执行。

break是  终止执行它所它所归属的那次循环的整个循环操作,然后执行该循环之后的后续代码。

 

欢迎关注,订阅,评论,共同学习,共同进步!

灰子学技术:


有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

2268 次点击  
加入收藏 微博
被以下专栏收入,发现更多相似内容
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传