1) Оператор goto работает только в пределах одной функции.
2) Оператор goto передает управление на строку с меткой (имя с двоеточием).
3) Метка может быть только одна (с одним именем).
4) Хорошим стандартом в программировании следует считать применение оператора break, continue и return вместо goto во всех случаях, когда это возможно. Но поскольку оператор break выполняет выход только из одного уровня вложенности, для глубоко вложенных циклов может потребоваться оператор goto.
#include <iostream> // std::cout
int main(){
for(int n = 0; n < 10; n++){ // Перебираем n от 0 до 10
for(int m = 0; m < 3; m++){ // Перебираем m от 0 до 3
if(n == 3){ // Если n равно трем переходим на метку label
goto label; // Выход оператором goto из вложенных циклов
}
std::cout << n << ":" << m << " ";
}
}
return 0;
label: std::cout << "goto label"; // Данная строка недостижима без goto (из-за предшествующего return)
}
//0:0 0:1 0:2 1:0 1:1 1:2 2:0 2:1 2:2 goto label Вывод программы