趣文网,分享全网好句子、好文章!

Goto语句无条件转移语句 一个让你欢喜堪忧的处理神器

时间:2023-10-20 05:42:02

相关推荐

Goto语句无条件转移语句 一个让你欢喜堪忧的处理神器

Hi,大家好,本专栏将会从零开始和大家用图文的方式,让你从零基础学会VBA!有兴趣的小伙伴可以持续关注我,或者在专栏进行查看学习,愿与君携手共进!

在上一个章节中我们说到循环嵌套的使用方法,相信经过一段的时间学习,您已经完全学会使用它们了。今天要和大家介绍的是另外一个神奇,他就是我们常用的GOTO语句。那么这个语句是如何理解呢?goto语句也被我们称为无条件转移语句,其一般格式如下: goto 语句标号; 其中语句标号是按标识符规定书写的符号, 放在某一语句行的前面,标号后加冒号(:)。语句标号起标识语句的作用,与goto 语句配合使用。在代码中使用的如下所示:

PS:goto语句通常与条件语句配合使用。可用来实现条件转移,构成循环,跳出循环体等功能。但是在结构化程序设计中我们一般不主张使用goto语句, 以免造成程序流程的混乱,使理解和调试程序都产生困难。

在VBA中间使用的时候,需要用冒号做标记,但是跟批处理的不一样,冒号在后面

start:

goto start

此例子就是会跳转到start:语句处,我们在给大家分享一个例子,如下所示:

Part-01小程序实现功能:判断表格数据中是否为迟到

Part-02 使用如下代码:

Part-03,程序执行以后得到的结果如下所示,综上所述,如下为GoTo 和GoSub的用法,都是跳转到某行,继而运行某个模块的功能。

那么说到这里,我们在什么情况使用这个语句呢?在以下的几种情况,我们可以选择使用它。

1、从多重循环中直接跳出,这样可以加快程序的执行效率;或许有的小伙们会说可以选择break;只能跳出单层的循环,return将整个函数都返回了,没法再继续了,显然也不行,所以我们想到了goto。如果是在陷入了很深层次的循环里想要跳出最外层的循环,用 goto 直接跳出却比用 break 一个循环一个循环地跳出要好得多。有人甚至形象比喻说:“就像楼房着火了,来不及从楼梯一级一级往下走,可从窗口跳出火坑。” 其实,你可以将 break 和 continue 理解成弱化了的 goto 语句。

2、程序出现报错时清除资源,如果一个函数有多个出口,则在每个出口处,会产生巨大的退出代码,如下例一,每个函数只能有一个出口,所有的资源释放必须放在出口统一解决,那全部使用大括号,十几个,几十个if判断条件下来,你数数你的大括号有多深?这种代码可读性不好,一旦写错了,难于寻找错误。所有这些问题,一个goto就解决了。

当程序要分配和清除资源时(像内存、或处理字形、窗口、打印机),这种情形下用goto通常是为了复制代码或清除资源。若遇到这种情况,程序员就要掂量是 goto 的缺点令人讨厌呢?还是复制代码那令人头痛的维护更讨厌呢?最后还是认为 goto 的缺点更可忍受。

3、可增加程序的清晰度的情况。若不使用goto语句会使功能模糊,有时候使用goto语句,一眼就看清楚了程序的意图,可用那些对应的循环break语句等实现的语句段,要想老半天才搞清楚程序意图的情况,也可考虑使用goto语句。

那么使用这个语句也会相应的带来一些弊端,如下所示的几个情况:

不加限制地使用goto破坏了清晰的程序结构,使程序的可读性变差,甚至成为不可维护的"面条代码"。不加限制地使用goto经常带来错误或隐患。它可能跳过了某些对象的构造、变量的初始化、重要的计算等语句,例如:在后续的学习中,需要做到结构化程序设计即可,如下所示:

在这里给小伙伴们一些建议,就是在使用GOTO语句的时候,还是需要稍微加以限制,虽然他好用,但是他的风险其实是非常大的,也是不可预料的。

goto语句一般情况下被当作破坏结构化程序的典型代表,可以说,在结构化程序设计年代,goto语句就像洪水猛兽一样,程序员都唯恐避之不及;可后来在微软的一些例子程序中经常把goto语句用来处理出错,当出错时,goto到函数要退出的一个label那里进行资源释放等操作。那么,goto语句是不是只可以用于出错处理,其他地方都不可以用了呢?下列关于使用goto语句的原则可以供读者参考。

1) 使用goto语句只能goto到同一函数内,而不能从一个函数里goto到另外一个函数里。

2) 使用goto语句在同一函数内进行goto时,goto的起点应是函数内一段小功能的结束处,goto的目的label处应是函数内另外一段小功能的开始处。

3) 不能从一段复杂的执行状态中的位置goto到另外一个位置,比如,从多重嵌套的循环判断中跳出去就是不允许的。

4)应该避免向两个方向跳转。这样最容易导致"面条代码"。

好啦!快乐的时间总是非常短暂的,又到了和大家说再见的时候,如果大家感觉本文如果对你有所帮助的话,请帮忙转发点赞,谢谢您能观看到现在,我们下期再见!

我是Excel教案,关注我持续分享更多的Excel技巧!

如果有不明白的或者不懂的可以在下方留言,我们会一一解答的。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。
显示评论内容(2)
  1. 浪族2024-01-15 01:03浪族[湖北省网友]203.25.147.226
    这个处理神器让我欢喜又堪忧使用起方便但也容易出错。
    顶6踩0
  2. 追蝶走2023-12-02 15:22追蝶走[国外网友]42.1.202.66
    Goto语句虽方便但滥用会使程序逻辑混乱需要谨慎使用。
    顶6踩0
相关阅读
VBA中重复操作的神器 Do……Loop循环语句 你值得拥有它

VBA中重复操作的神器 Do……Loop循环语句 你值得拥有它

Hi,大家好,本专栏将会从零开始和大家用图文的方式,让你从零基础学会VBA!有兴趣的小伙伴可以持续关注我,或者在专栏进行查看学习,愿与君携手共进!在

2011-12-11

三年级语文第一单元测试卷 平均分只有52分 农村学校质量堪忧

三年级语文第一单元测试卷 平均分只有52分 农村学校质量堪忧

但是这样的分数在农村小学却并不少见,横向对比了其他村级小学,基本上情况也都差不多

2023-10-07

小学生用作文神器写作文 欺骗自己还是老师?不如勤加练习

小学生用作文神器写作文 欺骗自己还是老师?不如勤加练习

未来,科学技术必将为人们带来更多实用、便利的好产品

2023-05-30

百度发布即时翻译“神器” 突破自然语言处理重大难关

百度发布即时翻译“神器” 突破自然语言处理重大难关

近日,百度研发了具备预测能力和可控延迟的即时机器翻译系统,可实现两种语言之间的高质量、低延迟翻译

2023-10-08