점프문에는 break, return, continue 등이 있다. 여기서는 goto 키워드만 간단히 알아본다.
goto 키워드는 switch 문 안에서 사용하는 것이 보통이지만 그게 goto 키워드를 사용할 때 꼭 필요한 조건은 아니다. 하지만 goto 문은 가이드 상에서도 사용하지 않는 것을 권장하고 있고 코드를 어지럽게 만들거나 해결하기 굉장히 어려운 버그의 원인이 되기도 하기 때문에 간단한 한개의 goto문으로 정리되는 코드이거나 정말 필요한 경우가 아니면 사용하지 않는 것이 좋다. (라고 배웠다.)
using System;
class Program
{
static void Main()
{
Start:
Console.Write("당신의 혈액형은 무엇인가요?\nAnswer:");
string bloodtype = Console.ReadLine();
if (bloodtype == "AB") goto AB;
else if (bloodtype == "A") goto A;
else if (bloodtype == "B") goto B;
else if (bloodtype == "O") goto O;
else
{
Console.WriteLine("잘못된 입력입니다.");
goto Start;
}
AB: { Console.WriteLine("당신은 AB형입니다."); goto End; }
A: { Console.WriteLine("당신은 A형입니다."); goto End; }
B: { Console.WriteLine("당신은 B형입니다."); goto End; }
O: { Console.WriteLine("당신은 O형입니다."); goto End; }
End:
Console.WriteLine("다시 하겠습니까? Y/N");
string ans = Console.ReadLine();
if (ans == "Y") goto Start;
else if (ans == "N") return;
else
{
Console.WriteLine("잘못된 입력입니다.");
goto End;
}
}
}
// 결과
// 당신의 혈액형은 무엇인가요?
// Answer:
// input>> A
// 당신은 A형입니다.
// 다시 하겠습니까? Y/N
// input>> y
// 잘못된 입력입니다.
// 다시 하겠습니까? Y/N
// input>> N
// 끝
이렇게 이동하고 싶은 지점을 (이름): 으로 지정해주면 된다. 다만 if문 처럼 어느 곳에서 goto를 받고와야만 진입가능한 코드가 아니라 순차적으로 그냥 지나가는 코드이고 goto문으로 이동할 위치로 지정된 것이기 때문에 여기를 특정 경우에만 들어오게 하려면 goto문으로 이동할 지점의 코드에 다른 경우로 진입하는 것 자체를 막아야한다. 여기부터 코드가 꼬이기 시작하는 것 같다.