Go语言之continue/break label

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

原文链接: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是  终止执行它所它所归属的那次循环的整个循环操作,然后执行该循环之后的后续代码。

 

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

灰子学技术:

wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值