Programing/dotnet core

goto문을 활용한 switch문

Ezzi 2020. 2. 18. 13:43
반응형

개발일을 하면서 goto문은 단 한번도 써본적이 없는 것 같습니다. 

 

첫 번째로 goto문은 조심해서 써야한다 라고 들었던 기억이 있었기 때문에 애초에 쓰기를 꺼려했던 것 같습니다.

 

두 번째로 특별히 goto문을 안쓴다고 해서 프로그램 제작이 불가능한 것은 아니기 때문에 사용할 이유를 못 느꼇습니다. 

 

세 번째로 일반적으로 코딩이라는 것이 평소 습관에 굉장히 많은 영향을 받는데 평소에 사용을 안하다 보니 습관화 되버린 것 같습니다. 

 

요즘 제가 닷넷코어 책을 읽고 있는데요. 

 

goto문에 대해서 다시한번 살펴보니 잘 사용한다면 switch 문에서 유용하게 써먹을 수 있을 것 같다는 생각이 들어서 연습을 해보게 되었습니다. 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
using System;
 
namespace dotnetcore
{
    class Program
    {
        static void Main(string[] args)
        {
            //switch
            START:
            var number = (new Random()).Next(16);
            switch(number)
            {
                case 1:
                    Console.WriteLine("One");
                    break;
                case 2:
                    Console.WriteLine("Two");
                    break;
                case 3:
                    END:
                    Console.WriteLine("Three");
                    break;
                case 4:
                    Console.WriteLine("Four");
                    goto END;
                case 5:
                    Console.WriteLine("Five");
                    goto START;
                default:
                    Console.WriteLine("Default");
                break;
            }            
        }
    }
}
 
cs

 

10줄에 START:

21줄에 END: 

다음과 같은 identifier를 만들어 주고.

 

특정 case에서 goto identifier 형태로 적어주면 식별자의 위치로 점프하는 원리 입니다. 

 

1,2,3 번이 나오면 그냥 출력합니다 .

 

4번이 나오면 3번에 END 위치로 점프하고

 

5번이 나오면 START 위치로 점프해서 처음부터 다시 시작하게 됩니다. 

 

말도 안되는 확률로 계속해서 랜덤 숫자가 5가 나온다면 무한 루프에 빠지게 되는 것입니다. 

 

다음은 실행 결과 입니다. 

 

중간에 5번이 2번 연속해서 나온 케이스가 있네요.

 

 

 

 

#goto사용법
#switch사용법

반응형