Всегда ли выгодно использовать goto в языке, который поддерживает циклы и функции? Если да, то почему?

Есть несколько причин для goto использования оператора "goto", о language-agnostic которых я знаю (некоторые exception-handling уже говорили об этом):

Чистый выход из функции

Часто language-agnostic в функции вы можете выделить c ресурсы и выйти из нее в goto нескольких местах. Программисты goto могут упростить свой код, поместив language-agnostic код очистки ресурсов в конец c функции, и все «точки выхода» функции language-independent перейдут к метке очистки. Таким c образом, вам не нужно писать exception-handling код очистки в каждой «точке c выхода» функции.

Выход из вложенных циклов

Если вы находитесь goto во вложенном цикле и вам exception-handling нужно выйти из всех циклов, оператор language-independent goto может сделать это намного c чище и проще, чем операторы exception-handling break и проверки if.

Низкоуровневые улучшения производительности

Это допустимо exception-handling только в коде, критичном language-agnostic к производительности, но exception-handling операторы goto выполняются c очень быстро и могут дать exception-handling вам ускорение при перемещении language-independent по функции. Однако это палка exception-handling о двух концах, поскольку language-agnostic компилятор обычно не может language-independent оптимизировать код, содержащий exception-handling операторы goto.

Обратите внимание, что goto во всех этих примерах goto language-agnostic ограничены рамками одной goto функции.

c

exception-handling

language-agnostic

goto

2022-10-09T02:39:55+00:00