goto 구문
- goto 문은 레이블이 지정된 곳으로 직접 프로그램 컨트롤을 전송합니다.
- 일반적으로 switch 문에서 switch-case 레이블 또는 기본 레이블로 컨트롤을 전송하는 데 사용됩니다.
goto 사용 예제1
- switch문에서 사용 예제를 확인해봅시다.
n
변수에 2를 입력받으면 switch문의case2
의 코드를 실행 후 goto문을 만나게 되면서case 1
으로 이동하여 코드를 수행하게됩니다.- 3을 입력받으면 case3 -> case2 -> case1 조건으로 이동하여 코드를 수행하게됩니다.goto 사용 예제2
static void Main(string[] args) { string s = Console.ReadLine(); int n = int.Parse(s); int cost = 0; switch(n) { case 1 : cost += 10; break; case 2: cost += 10; goto case 1; case 3: cost += 10; goto case 2; default: Console.Write("Invalid selection."); break; } Console.WriteLine($"n = {n}, cost = {cost}"); }
- C#에서는 C언어의 goto문 만큼 자유롭게 이동할 수 없습니다.
- 특정 코드의 블록의 "바깥쪽"으로 코드 순서를 옮길 수 있지만, "안쪽"으로는 이동할 수 없습니다.
static void Sample_Goto_Outside()
{
{
goto label; //코드 블록 바깥쪽으로 이동
}
label:
Console.WriteLine("Finished");
}
static void Sample_Goto_Inside()
{
goto label; //코드 블록 안쪽으로 이동
{
label:
Console.WriteLine("Finished");
}
}
정리
- goto문을 사용하면 프로그램의 흐름이 바뀌므로 스파게티 코드가 되어 해석하기 어려울 수 있습니다.
'프로그래밍 > (도서)C#코딩의기술-실전' 카테고리의 다른 글
[C#] 코딩의기술(실전편) - 2.14 테스트와 목(mock) (0) | 2022.03.31 |
---|---|
[C#] 코딩의기술(실전편) - 2.11 TryParse에서 결과를 보지 않는 경우 (0) | 2022.03.31 |
[C#] 코딩의기술(실전편) - 2.7 포인터 (0) | 2022.03.31 |
[C#] 코딩의기술(실전편) - 2.6 unsafe (0) | 2022.03.31 |
[C#] 코딩의기술(실전편) - 2.5 Checked 키워드 (0) | 2022.03.31 |