¿Por qué no se recomienda utilizar declaraciones goto?
La instrucción goto es una instrucción de transferencia, que cambia directamente la IP del puntero de instrucción actual de la CPU a la dirección de instrucción señalada por la instrucción goto y luego continúa la ejecución desde esta dirección. Desde la perspectiva del lenguaje ensamblador, la declaración goto corresponde a la instrucción jmp del lenguaje ensamblador. Sin embargo, el peligro del lenguaje ensamblador es que el salto de la instrucción jmp no está restringido o es menos restringido. El nivel de instrucción de la máquina puede saltar a voluntad. En realidad, es muy difícil verificar estrictamente las instrucciones antes de ejecutarlas.
Los primeros lenguajes de algoritmos, como fortran, pascal, basic, etc., admitían declaraciones goto, porque había menos declaraciones en ese momento y era necesario implementar estructuras de rama y estructuras de bucle con la ayuda de Ir a declaraciones. Sin embargo, estos lenguajes de alto nivel tienen restricciones estrictas sobre las declaraciones goto. Por ejemplo: (1) Puede saltar desde el interior de una estructura (condición, bucle) al exterior, pero no al revés; no está permitido saltar directamente desde una subrutina, pero es necesario utilizar una declaración de retorno similar a return para salir de la subrutina. Por supuesto, está absolutamente prohibido saltar desde el programa principal a una subrutina, etc. Estas limitaciones todavía se aplican a los lenguajes algorítmicos modernos que también admiten declaraciones goto.
Con la estructuración y modularización de los lenguajes, algunos lenguajes de alto nivel ya no admiten declaraciones goto. Esto se hace para que el programa sea más fácil de leer y comprender, y para facilitar el mantenimiento del código.