더북(TheBook)

2.3.2 switch

switch  {
case 조건1:
    
case 조건2:
    
default:
    
}

if 문과 마찬가지로 여는 괄호({)는 switch와 같은 줄에 있어야 한다. switch 문은 첫 번째 case의 조건부터 차례로 비교하다가 조건이 일치하는 case의 구문을 수행하고 switch 문을 종료한다. case에는 값을 하나 이상 쓸 수 있다. 값을 둘 이상 쓸 때는 콤마(,)로 구분해준다.

switch i {
case -1, -2:
    fmt.Println(i, "는 음수입니다.")
case 1, 2:
    fmt.Println(i, "는 양수입니다.")
}

일치하는 case 조건을 만나면 바로 switch 문을 빠져나오므로 switch 문에는 break를 쓰지 않아도 된다. 일치하는 조건을 만났지만 switch 문을 빠져나오지 않고 다음 case로 넘어가려면 fallthrough를 표기해야 한다.

switch i {
case 0: // i가 0일 때 아무것도 수행하지 않음
case 1: // i가 1일 때만 수행함
    f()
}
 
switch i {
case 0:
    fallthrough
case 1: // i가 0일 때와 1일 때 모두 수행함
    f()
}

다음은 fallthrough를 사용한 코드와 사용하지 않은 코드의 차이다.

▼ fallthrough를 사용하지 않음

package main
  
import "fmt"
  
func main() {
    i := 2
    switch i {
    case 1:
        fmt.Println("i는 1입니다.")
    case 2:
        fmt.Println("i는 2입니다.")
    case 3:
        fmt.Println("i는 3입니다.")
    }
}

실행 결과

i는 2입니다.

▼ fallthrough를 사용함

package main
  
import "fmt"
  
func main() {
    i := 2
    switch i {
    case 1:
        fmt.Println("i는 1보다 작거나 같습니다.")
        fallthrough
    case 2:
        fmt.Println("i는 2보다 작거나 같습니다.")
        fallthrough
    case 3:
        fmt.Println("i는 3보다 작거나 같습니다.")
    }
}

실행 결과

i는 2보다 작거나 같습니다.

i는 3보다 작거나 같습니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.