在支持循环和函数的语言中,&goto"是否有任何合法的使用案例? [英] Are there any legitimate use-cases for "goto" in a language that supports loops and functions?

查看:16
本文介绍了在支持循环和函数的语言中,&goto"是否有任何合法的使用案例?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我一直觉得,如果可能的话,永远不要使用goto

然而,前几天在仔细阅读libavcodec(它是用C语言编写的)时,我惊讶地注意到它被多次使用。

在支持循环和函数的语言中使用goto是否有利?若有,原因为何?请提供一个具体的例子,清楚地证明使用goto是合理的。

推荐答案

我知道使用"goto"语句有几个原因(有些人已经谈过了):

干净退出函数

通常在函数中,您可能会分配资源并需要在多个位置退出。程序员可以通过将资源清理代码放在函数的末尾来简化他们的代码,并且函数的所有"出口点"都将转到清理标签。这样,您就不必在函数的每个"出口点"编写清理代码。

退出嵌套循环

如果您处于嵌套循环中,并且需要中断所有循环,则GOTO可以使这一点比Break语句和IF-Checks更干净、更简单。

低级别性能改进

这只在性能关键型代码中有效,但是goto语句执行得非常快,在遍历函数时可以给您带来提振。然而,这是一把双刃剑,因为编译器通常无法优化包含GOTO的代码。

请注意,在所有这些示例中,GoTO都限制在单个函数的范围内。

这篇关于在支持循环和函数的语言中,&goto"是否有任何合法的使用案例?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆