这类语言限定的问题,通过接触其他语言学习他们的区别是一个很容易打开思路的方式。

goto 类似汇编里的 jmp, 是很原始的控制流。它带来的问题各种教科书都说烂了,代码逻辑难以理解,缺乏抽象。在 c++ 里用上几个 goto 就会破坏结构化编程和 OOP 给程序带来的收益。

函数调用就是对 goto 的一种抽象,从函数名称的业务自描述,单一参数入口,单一 return 出口(不考虑 throwable/exception 机制). 这样在看代码时候也容易理解和重构,调用一个函数,细节可以见名知意,函数调用后控制流又返回调用点,继续以自上而下的线性顺序走下去。

从可读性角度说,一些语言的异步机制与 goto 造成的问题是完全相似的:例如 async/await 的异步语法有一点好处是它和通常的控制流一样,保持线性顺序。而用 Thread.new() 或 golang 里面 go 关键字 spawn 出去的线程协程,就造成了把控制流一分为二。为数众多的 concurrent problems 就是在程序员不熟练或疏忽的时候这样而来,对新手来说也不容易溯源。

回到 goto 和 c++ 之后出现的主流高级语言,在控制流结构化之后,语言设计者可以大胆增加一些更体贴的语法特性。而这些语法需要依赖的大前提就是结构化的控制流,在语言设计伊始就禁用 goto 这样的原始机制。比如在 auto resource cleanup 的场景下:

# python `with` 关键字

with open("file") as f:

...

// java `try-with-resource`

try (PrintWriter writer = new PrintWriter(new File("test.txt"))) {

writer.println("Hello World");

}

// c# `using` 关键字

using (Class1 cls1 = new Class1(), cls2 = new Class1())

{

// the code using cls1, cls2

}

这类语法显然就不能允许 goto 的存在。若代码逻辑突然被 goto 到 with block 下面,而文件资源这时又没有初始化,这里就会出现一种问题。所以高级语言更倾向于结构化的、有序的控制流,goto 这种原始的跳转方式就被摈弃了。

三菱goto怎么用_为什么说goto是一种不好的用法?相关推荐

  1. c语言goto语句标号作用,goto语句怎么用(c语言goto用法)

    goto语句怎么用(c语言goto用法) 2020-07-28 02:03:29 共10个回答 1.C语言中goto又叫无条件转移语句,可以让程序直接跳转到任意标记的位置.用法就是"goto ...

  2. goto在Java中的替代(break和continue的进阶用法)

    文章目录 前言 一.goto是什么? 二.goto与Java的关系 1.关系 2.Java中的标签 2.break和continue的进阶用法 总结 前言 goto语句是在源码级上的跳转,这使得其招致 ...

  3. 三菱FX3U系列PLC运动控制_伺服回原点的3种方法示例

    三菱FX3U系列PLC运动控制_伺服回原点的3种方法示例 方法1: 运动的方向为圆形.环形.电机往一个方向转动: 只有一个原点开关,没有极限开关 如下图所示, 原点回归的方式为:启动回原点后,电机开始 ...

  4. 三菱V3菱悦智能遥控匹配详细的(两种)方法 配钥匙

    三菱V3菱悦智能遥控匹配详细的(两种)方法 蜂鸣器, V3菱悦, 主机, 遥控器, 报警喇叭 方法遥控器学习 当遥控器损或丢失时可通过重新学习操作将原遥控器信息从主机记忆中删除然后重新学习遥控器 1先 ...

  5. java跳转语句包含goto_Java 的跳转语句中 _______( 包含 / 不包含 )goto 语句。_学小易找答案...

    [单选题]承压水井和潜水井是根据()来划分的. [单选题]下列哪个叙述是正确的? [其它]Demo编程:分别用以下布局实现如图所示界面: 线性布局(LinearLayout) 表格布局(TableLa ...

  6. python画图goto的意思_在python中怎么实现goto功能

    匿名用户 1级 2013-07-30 回答 goto语句也称为无条件转移语句,其一般格式如下: goto 语句标号: 其中语句标号是按标识符规定书写的符号, 放在某一语句行的前面,标号后加冒号(:). ...

  7. php goto 代码还原_【表哥有话说 第58期】代码审计思路小结

    最近也在做一些代码审计,因此有了这篇文章,和大家聊一聊代码审计时的思路和步骤,有新想法的师傅不妨一起讨论讨论 工具测试 正常情况下拿到一份代码,首先放到seay代码审计系统里跑一遍,将跑出来的结果保存 ...

  8. php中goto另一个页面,php中goto操作符的详细介绍

    php goto操作符 可以用来跳转到程序的另一个位置.该位置可以用目标名称加冒号来标记,而跳转指令是在goto之后接上目标的位置标记 对已goto操作符使用的一些限制 目标位置只能位于同一个文件和作 ...

  9. c语言 12 goto,C语言第12讲goto语句及习题课..ppt

    C语言第12讲goto语句及习题课. goto语句 例:显示输出一组整数:1-20. #include "stdio.h" main( ) { int n=1; while(1) ...

最新文章

  1. linux显示不在sudoers文件中,Ubuntu无法使用sudo提权提示当前用户不在sudoers文件中...
  2. MIIC:互联网会成基础设施,智能硬件就是互联网硬件
  3. 【Unity】11.5 物理材质 (Physics Material)
  4. POJ-2480 Longge's problem 积性函数
  5. 大厂产品专家是怎么做项目的?
  6. linux 上删除docker 虚悬镜像
  7. 无符号数的算术四则运算中的各类单词的识别_文本反垃圾在花椒直播中的应用概述...
  8. ae toolbarcontrol运行时没有_想办法让AE跑起来
  9. 嵌入式操作系统_航天科工海鹰翼辉嵌入式操作系统获自主原创“身份证”
  10. 剑指 Offer JZ35 复杂链表的复制
  11. 教你编写第一个人工智能程序
  12. C# NOPI 项目实战(经典)(可下载项目源码)
  13. SQL 字符串去除空格函数
  14. 一文详解GATK-HaplotypeCaller 变异检测原理和实战
  15. 高考英语语法填空满分秒杀技巧
  16. 【C#】记录一次上位机软件界面闪退分析及解决方案
  17. 阿里云-RPA-2-第一个PRA程序
  18. JDK1.6“新“特性Instrumentation之JavaAgent
  19. Goroutine及其使用实例【Go语言圣经笔记】
  20. Android Studio OpenGL ES绘制三棱锥/四面体的多纹理贴图 每个面使用一张图片渲染

热门文章

  1. Java 出现java.lang.SecurityException: Prohibited package name:java.my 错误解决方法
  2. 使用psql运行.sql文件
  3. Apache Druid RCE(CVE-2021-25646)复现
  4. Android4.0 实现组合键重启手机
  5. Ubuntu英文系统设置中文UTF-8支持
  6. DI的三种依赖注入方式和底层实现
  7. 人工智能现在已经可以参与操纵高超音速飞行器
  8. 琼斯是计算体心立方弹性模量_大学免费查题的软件,超好用的搜答案神器在这里?...
  9. Java自动生成订单编号+流水号
  10. 【IEEE2014】EET:基于采样的机器人运动规划中的平衡勘探与开发