Go语言之continue/break label(五)

作者: 灰常出色 | 来源:发表于2019-05-22 10:19 被阅读89次

    前言介绍:本人原本是C++开发工程师,使用C++已经有8年多的时间,最近在学习Go语言,在学习Go语言的时候,难免会拿Go语言与C++语言做一些比较。

    一、写在前面的话:

    最近碰到了,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语言之continue/break label(五)

        本文链接:https://www.haomeiwen.com/subject/clzezqtx.html