网易首页 > 网易号 > 正文 申请入驻

代码里尽量不要用goto?不,只是你用不好而已!

0
分享至

不少编程语言都有“goto”这个特性,但是,我们公司一个程序员看到我用goto,惊讶的说道:“你咋用goto?最好不要用goto!”,我问他为什么不能用,他也说不上来。

goto顾名思义,就是“去到哪里”的意思,在编程语言里,经常用来定位“锚点”,比如学过HTML基础的程序员应该都知道,HTML是有“锚点”这个概念的,有些网站的“回到顶端”就是使用“锚点标签”来实现的。

goto的用法

其他编程语言我不知道,至少在C#这门编程语言里,也是有goto的,定义“锚点”的时候,只需要使用“@”符号后面加一个“锚点”的名字就可以了,比如“@FunEnd:”,但是要注意,后面要加一个英文的冒号,即“:”。

当我们想要代码跳到“锚点”所在的位置时,就需要使用goto了,比如“goto FunEnd”,是不是很简单?

那么,goto到底有什么用?为什么很多程序员都不建议使用goto呢?那么,goto到底有什么用?为什么很多程序员都不建议使用goto呢?

尽量不用goto的原因

goto的使用场景很简单,比如当代码中有很长一段逻辑,并且,如果逻辑是按照从上往下顺序执行,当执行到某个位置,我们不希望它继续执行,但是在代码的末尾又有统一的返回逻辑时,我们可以使用goto。

当然了,使用if语句也可以做到跟goto一样的效果,可我们如果在程序里写很多if语句,可能造成代码看起来不太优雅,所以,使用goto就比较合适了。

上面举的例子只是goto的一种用法,可以看我写的示例来理解goto的用法,其他用法您可以自行探索,这里就不多举例了!

为什么我们公司的同事看到我使用goto很惊讶,并且表示最好别用呢?

其实,我听过很多程序员都说过最好不要用goto,基本上他们也说不出来原因,只知道这就是程序员们口口相传的事情,传着传着就不让用了!

于是,我为了尝试搞清楚大家为什么都很排斥用goto,特地了解了下,基本上给出了以下几种说法。

第一种说法,goto是过去“面向过程”型编程语言时残留的写法,但是现在“面向对象”型编程语言的特性已经包含了“封装”这个特性,过去“面向过程”型编程语言的一些痛点已经被“面向对象”型编程语言给解决了,因此goto的好处就基本上可以被忽视了。

第二种说法在又增加了一种解释,比如说使用goto的话,会增加代码的复杂性,减小代码的可读性,简单得讲,goto因为能跳到代码的任何位置,因此在阅读代码的时候可能会导致空间错乱,影响阅读效率。

第三种说法在第一种和第二种说法的前提上,又增加了一种解释,那就是不可控!

所谓不可控很简单,其实很多代码的写法在程序员里面都被认为是不可控的写法,其他常见的不可控写法,我能想到的就有两个,分别是“死循环”和“递归”。

比如我们需要监视一个变量的状态,我们可以使用“死循环”来监视,有些“死循环”是需要控制它在合适的时机跳出去的,有些“死循环”则需要无限期执行,直到软件的运行生命周期终止,但如果在线程里面使用死循环或者在死循环里面使用线程的话,可能就会导致程序终止,但线程依然还在执行。

在这种情况下,想要控制“死循环”就需要代码写得非常谨慎,否则可能最后轻则导致CPU和内存过载,重则宕机。在这种情况下,想要控制“死循环”就需要代码写得非常谨慎,否则可能最后轻则导致CPU和内存过载,重则宕机。

其实,“递归”和goto所谓的“不可控”跟“死循环”的不可控原因是一样的,几乎只要控制不好,就可能导致陷入一个无限循环。

结语结语

但是,所谓的“不可控”,我觉得,只是那些在“不可控”场景下吃过亏的程序员的自我解释的理由罢了,实际上想要做到可控,代码写严谨一些就行了!

比如上述三个例子,就顺利结束!

简单点说,如果真不可控了,那么说明代码写得有问题。简单点说,如果真不可控了,那么说明代码写得有问题。

最后,我觉得goto不是不能用,而是既要保证不影响代码阅读(比如尽量让goto向下跳而不向上跳),又要保证可控,那goto依然能用。

如果goto真的像一些程序员说得那么不堪,那goto应该早就被各大编程语言设置成“过时”方法了,而很多编程语言里很多旧的函数都已经被标为“过时”了,可goto依然健在,足以说明它没那么不堪

声明:个人原创,仅供参考

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
高铁上旅客用刀削苹果,刀刃较长!网友质疑“这是可以带的吗”,已向12306投诉

高铁上旅客用刀削苹果,刀刃较长!网友质疑“这是可以带的吗”,已向12306投诉

19楼
2026-09-19 08:47:44
河南一数学老师花300多万拍院线电影,上映三天票房不到3万,本人回应:已无力回天

河南一数学老师花300多万拍院线电影,上映三天票房不到3万,本人回应:已无力回天

互联网大观
2026-09-18 17:44:42
沙特挨了揍,才知道土耳其巴基斯坦不靠谱,真盟友还得是以色列

沙特挨了揍,才知道土耳其巴基斯坦不靠谱,真盟友还得是以色列

山间听雨
2026-09-19 11:44:09
齐达内点兵!法国公布23人名单:5大新人+11将被弃 26岁法甲金靴圆梦

齐达内点兵!法国公布23人名单:5大新人+11将被弃 26岁法甲金靴圆梦

我爱英超
2026-09-19 06:26:31
救助摔倒老人却遭索赔92万元,终审驳回全部诉求!当事快递员最新发声

救助摔倒老人却遭索赔92万元,终审驳回全部诉求!当事快递员最新发声

天下泉城
2026-09-19 15:30:12
提出问题的人,又一次倒大霉了?

提出问题的人,又一次倒大霉了?

走读新生
2026-09-19 00:58:15
男篮惨败被钉耻辱柱!日本队却疯狂挑衅中国队:郭士强被打哭了?

男篮惨败被钉耻辱柱!日本队却疯狂挑衅中国队:郭士强被打哭了?

篮球快餐车
2026-09-18 20:31:53
小学生弄湿课本怕挨骂,花3天“手搓”语文书:抄课文,画插图,连条形码都复刻;父亲:字差了点,别的没毛病

小学生弄湿课本怕挨骂,花3天“手搓”语文书:抄课文,画插图,连条形码都复刻;父亲:字差了点,别的没毛病

蓬勃新闻
2026-09-18 16:34:44
疯狂?拜仁携7-0登顶德甲!1.7亿巨星戴帽+独造5球 凯恩百球里程碑

疯狂?拜仁携7-0登顶德甲!1.7亿巨星戴帽+独造5球 凯恩百球里程碑

我爱英超
2026-09-19 06:07:14
女子怀疑医生在其子宫装监听器,手机一放歌就异常!两次告上法庭

女子怀疑医生在其子宫装监听器,手机一放歌就异常!两次告上法庭

砚田文化
2026-09-18 08:34:48
俄罗斯天然气谈判陷僵局!中国反手签下美国20年大单,太解气

俄罗斯天然气谈判陷僵局!中国反手签下美国20年大单,太解气

共工之锚
2026-09-19 00:31:38
菲船十分钟内两次挑衅我海警艇,现场视频还原真相

菲船十分钟内两次挑衅我海警艇,现场视频还原真相

上观新闻
2026-09-19 15:54:48
中日篮球史上最耻辱一战!杨毅气得飙脏话,付政浩:郭士强辞职吧

中日篮球史上最耻辱一战!杨毅气得飙脏话,付政浩:郭士强辞职吧

十点街球体育
2026-09-18 23:34:32
2换9,交易福克斯?马刺你这是要飞啊

2换9,交易福克斯?马刺你这是要飞啊

体育新角度
2026-09-19 15:51:46
内部人先知先觉?黄仁勋高位离场出售约4.6万股英伟达股票!A股下周将走向何方?

内部人先知先觉?黄仁勋高位离场出售约4.6万股英伟达股票!A股下周将走向何方?

春江财富
2026-09-19 09:44:37
男子制作虚假信息胁迫酒吧兼职女大学生多次发生关系,辩称女生是自愿,二审法院:李某行为已达到对女生精神上的强制,驳回上诉判刑5年

男子制作虚假信息胁迫酒吧兼职女大学生多次发生关系,辩称女生是自愿,二审法院:李某行为已达到对女生精神上的强制,驳回上诉判刑5年

扬子晚报
2026-09-19 14:34:01
这么离谱?美媒:F-35零部件被转运至香港后丢失,中国可能获取关键技术

这么离谱?美媒:F-35零部件被转运至香港后丢失,中国可能获取关键技术

爱迷彩的老虎
2026-09-19 10:22:22
局势已经全面反转!菲律宾前大法官公开表示:总统与副总统不得参与任何商业活动

局势已经全面反转!菲律宾前大法官公开表示:总统与副总统不得参与任何商业活动

坠入二次元的海洋
2026-09-19 10:36:53
“错换人生28年”当事人姚策生父去世,姚策生母:已安葬,长期压抑,纠纷、官司以及网友的误解,情绪得不到排解,各种疾病导致心脏衰竭

“错换人生28年”当事人姚策生父去世,姚策生母:已安葬,长期压抑,纠纷、官司以及网友的误解,情绪得不到排解,各种疾病导致心脏衰竭

极目新闻
2026-09-19 11:49:19
三万亿欧元打水漂!冯德莱恩还在硬挺,欧洲百姓傻眼了

三万亿欧元打水漂!冯德莱恩还在硬挺,欧洲百姓傻眼了

浯江孤舟
2026-09-19 10:42:04
2026-09-19 16:51:01
程序员古耕 incentive-icons
程序员古耕
程序员、网文作家、自媒体人
624文章数 393关注度
往期回顾 全部

科技要闻

要走650亿,智谱的理想越来越贵

头条要闻

中学老师给女学生发"好想去你家玩"等信息 纪委介入

头条要闻

中学老师给女学生发"好想去你家玩"等信息 纪委介入

体育要闻

好吧,中国男篮辛苦了

娱乐要闻

蔡卓妍小腹凸起疑怀孕?本人没回应

财经要闻

江西首富破产:一张927万商票压垮千亿帝国

汽车要闻

纯电/插混双动力+五座/六座双布局 海狮08应该怎么选?

态度原创

本地
时尚
教育
手机
公开课

本地新闻

中秋逛白塔寺,体验国医妙荟雅集

今日热点:科学家发现全新猫科物种;白举纲婚礼……

教育要闻

看完这本令人窒息的书,北京名校长连问三个问题,一个比一个值得深思

手机要闻

苹果首次回应iPhone Duo折痕问题:并未消失 但已设法让用户逐渐忘记它的存在

公开课

李玫瑾:为什么性格比能力更重要?

无障碍浏览 进入关怀版