Руководство по Ada (Ada 2022)
5.8 Операторы Goto
Оператор goto_statement указывает на явную передачу управления от этого оператора к целевому оператору с заданным меткой.
Синтаксис
Правила разрешения имен
Правила легитимности
Внутренний последовательность_операторов, который включает целевой оператор, также должен включать оператор goto_statement. Кроме того, если оператор goto_statement заключен в оператор_приема или в тело, то целевой оператор не должен находиться вне этого включающего конструкта.
Динамические семантика
Выполнение оператора goto_statement передает управление целевому оператору, завершая выполнение любого составного_оператора, который включает оператор goto_statement, но не включает целевой.
ПРИМЕЧАНИЕ Вышеупомянутые правила позволяют передачу управления оператору оператора включающей последовательности_операторов, но не наоборот. Аналогично, они запрещают передачи управления, такие как между альтернативами case_statement, if_statement или select_statement; между обработчиками_исключений; или из обработчика_исключений обрабатываемой_последовательности_операторов обратно в последовательность_операторов.
Примеры
Пример цикла, содержащего оператор goto:
<<Sort>>
for I in 1 .. N-1 loop
if A(I) > A(I+1) then
Exchange(A(I), A(I+1));
goto Sort;
end if;
end loop;
for I in 1 .. N-1 loop
if A(I) > A(I+1) then
Exchange(A(I), A(I+1));
goto Sort;
end if;
end loop;