goto Statementgoto는 프로그램 흐름을 같은 함수 안의 Label (레이블)로 강제로 이동시키는 Unconditional Jump (무조건 분기) 문이다.
goto label;
// 중간 코드 생략
label:
// 여기서 계속 실행
레이블은 goto보다 앞이나 뒤에 둘 수 있다. 같은 함수 안에서만 이동 가능하다.
cout << "A";
goto skip;
cout << "B"; // 실행 안 됨
skip:
cout << "C";
출력:
AC
goto할 수 없음goto가 많아지면 실행 흐름이 비선형적으로 꼬여 Spaghetti Code (스파게티 코드)가 되기 쉽다.
따라서 일반적으로:
goto
→ 가능하면 피함
대신
→ if / loop / function / exception 등을 사용
오류 처리처럼 일부 상황에서 사용할 수 있지만, 대부분 더 구조적인 방법으로 대체할 수 있다.