Notice
Recent Posts
Recent Comments
Link
«   2024/11   »
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
Archives
Today
Total
관리 메뉴

Code Habit

Go ) switch 분기문 본문

카테고리 없음

Go ) switch 분기문

코드베어 2020. 5. 12. 09:45

switch 분기문을 사용하면 다양한 조건을 좀 더 간단하게 표현할 수 있다.

switch 변수 {
case 값1:
    fmt.Println("case 1")
case 값2:
    fmt.Println("case 2")
default:
    fmt.Println("default")
}

Go 언어의 switch 분기문은 C와는 달리 case에서 break 키워드를 생략한다.

 

변수는 숫자뿐 아니라 문자열도 사용할 수 있고 break를 사용하여 문장 실행을 중단할 수도 있다.

s := "Hello"

switch s {
case "Hi":
    fmt.Println("Hi")
case "Hello":
    fmt.Println("Hello")
    break;
    fmt.Println("everyone")
}

 

fallthrough 키워드를 사용하여 case문을 연달아 실행할 수 있다. 마치 C의 switch 분기문에서 break 키워드를 생략한 것처럼 동작한다.

i:=3
switch i {
case 3:
    fmt.Println("3")
    fallthrough
case 2:
    fmt.Println("2")
    fallthrough
case 1:
    fmt.Println("1")
}

// 출력 결과
3
2
1

 

case에서 ,(콤마)로 값을 구분하여 여러 조건을 같은 문장으로 처리할 수 있다.

i := 3
switch i {
case 2, 4, 6:
    fmt.Println("짝수")
case 1, 3, 5:
    fmt.Println("홀수")
}

 

case문에서 조건식을 활용할 수 있다.

i := 7
switch {	// case에 조건식을 지정했으므로 판단할 변수는 생략
case i >= 5 && i <10;
    fmt.Println("5 이상 10 미만")
case i >= 0 && i < 5:
    fmt.Println("0 이상 5 미만)
}

 

switch 분기문 안에서 함수를 실행하고 결과값으로 분기할 수 있다. 이때는 함수를 호출하고 뒤에 ;(세미콜론)을 붙여준다. 이 때 case에서는 값으로 분기할 수 없고 조건식만 사용할 수 있다.

rand.Seed(time.Now().UnixNano())
switch i:= rand.Intn(10); {
case i >= 3 && i < 6:
    fmt.Println("3 이상 6 미만")
case i == 9:
    fmt.Println("9")
default:
    fmt.Println(i)
}