我的祖国冷知识 我的祖国相关知识
14232023-09-09
style="text-indent:2em;">大家好,今天给各位分享写程序为什么不主张用goto语句的一些知识,其中也会对goto语句不建议进行解释,文章篇幅可能偏长,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在就马上开始吧!
本文目录
后边可以加to也可以不加to,例如:
1.Hehadtogotothehospitalfortreatment.他不得不去医院接受治疗。
2.Whydon'twegoandseeittogether?咱们为什么不一起去看看呢?
3.Theresultisgoingtobetooclosetocall.双方实力非常接近,因此结果无法预料。
4.Don'tgo─Imightneedyou.别走——我可能要你帮忙。
5.Hehadtogotohospitalfortreatment.他不得不去医院接受治疗。
Golang有很多明显的不足之处
其中第一个是错误、异常处理麻烦,且不能跨协程捕获异常。在Golang中,你要针对每一个协程的异常进行单独处理,判断是否存在错误你需要使用很多像err!=nil这样的语句。
MISRA(TheMotorIndustrySoftwareReliabilityAssociation),中文名称为汽车工业软件可靠性联会,是英国的一个跨国汽车工业协会,其成员包括了大部分欧美汽车生产商。其核心使命是为汽车工业提供服务和协助,帮助厂方开发安全的、高可靠性的嵌入式软件。MISRAC则是由MISRA提出的针对嵌入式C语言开发标准,目的是提高嵌入式系统的安全性、可读性和可移植性。
MISRAC明确规定不能使用goto语句,如下:
规则14.4(强制):goto语句不能使用。
规则14.5(强制):continue不能使用。
规则14.6(强制):函数应在函数结束有一个出口。
规则14.7(强制):witch、whiledo、whilefor语句体应是一个混合语句。
规则14.10(强制):所有ifelseif结构都应该由else结束。
我想,原因主要为:
1、二十几年前,当计算机编程尚处于起步阶段时,程序流程是由“GOTO”语句来控制。该类语句允许程序员对当前代码行断行,而直接进入另一个不同的代码段,在程序比较简单是用goto语句是比较灵活,但是当程序比较复杂时很容易造成程序流程的混乱。
2、破坏了清晰的程序结构,使程序的可读性变差,甚至成为不可维护的"面条代码"。
3、经常带来错误或隐患,比如它可能跳过了某些对象的构造、变量的初始化、重要的计算等语句。
4、GOTO语句使程序的静态结构和动态结构不一致,从而使程序难以理解,难以查错。
如果确实不可避免需要使用,下列关于使用goto语句的原则可以供参考:1)使用goto语句只能goto到同一函数内,而不能从一个函数里goto到另外一个函数里。2)使用goto语句在同一函数内进行goto时,goto的起点应是函数内一段小功能的结束处,goto的目的label处应是函数内另外一段小功能的开始处。3)不能从一段复杂的执行状态中的位置goto到另外一个位置,比如,从多重嵌套的循环判断中跳出去就是不允许的。4)应该避免像两个方向跳转。这样最容易导致"面条代码"。
goto语句
goto语句也称为无条件转移语句,其一般格式如:goto语句标号;其中语句标号是按标识符规定书写的符号,放在某一语句行的前面,标号后加半角冒号“:”。语句标号起标识语句的作用,与goto语句配合使用。
中文名
无条件转移
外文名
goto
举例
goto语句也称为无条件转移语句,其一般格式如下:
goto语句标号;
其中语句标号是按标识符规定书写的符号,放在某一语句行的前面,标号后加半角冒号“:”。语句标号起标识语句的作用,与goto句配合使用。如:
label:i++;
loop:while(x<7);
gotoloop;
C语言不限制程序中使用标号的次数,但各标号不得重名。goto语句的语义是改变程序流向,转去执行语句标号所标识的语句。
goto语句通常与条件语句配合使用。可用来实现条件转移,构成循环,跳出循环体等功能。
但是,在结构化程序设计中一般不主张使用goto语句,以免造成程序流程的混乱,使理解和调试程序都产生困难。
如果你还想了解更多这方面的信息,记得收藏关注本站。