golang 분기문 switch

1 minute read

switch()

  • 형식

    switch 변수 {
    case 값1 :
        // 변수 == 값1 일 때, 실행
    case 값2 :
        // 변수 == 값2 일 때, 실행
    default :
        // 위 모든 조건에 만족하지 않을 때 실행
    }
    
    • 숫자 뿐만 아니라 문자열, 조건식 또한 값으로 사용할 수 있다

break _ 실행 중지

  • break 사용 가능

    s := "Hello"
    i := 2
      
    switch i{
    case 1 :
        fmt.Println(1)
    case 2 :
        if s == "Hello"{
            fmt.Println(s,2)  // Hello 2
            break
        }
        fmt.Println(2)
    }
    

fallthrough _ 그 다음 case문도 실행

  • fallthrough 사용하기

    • 특정 case 를 실행 한 후, 바로 그 다음 case 문도 실행하고 싶을 때 사용
    • 마지막 case 문에는 사용할 수 없음
    i := 2
      
    switch i {
    case 3 :
        fmt.Println("3")
        fallthrough
    case 2:
        fmt.Println("2")  // 실행 2
        fallthrough
    case 1 :
        fmt.Println("1")  // 실행 1 끝
    default :
        fmt.Println("0")
        // fallthrough 사용 불가능
    }
    
    • case 2 조건에 부합해서 fmt.Println(“2”) 실행
    • fallthrough를 만나서 바로 그 다음 조건문도 실행
    • case 1 에는 fallthrough가 없으니 실행 종료

조건을 주는 여러가지 방법

  • 여러 조건 함께 처리하기

    • , (콤마) 로 값을 구분해주면 됨

      i := 3
      switch i {
      case 1,3,5 :
          fmt.Println("홀수")
      case 2,4,6 :
          fmt.Println("짝수")
      }
      
  • 조건식으로 분기하기

    • swtich 키워드 다음에 판별할 변수를 지정하지 않고 case에서 조건식으로만 문장을 실행 할 수도 있음!!
    i := 7
      
    switch {
    case i >= 5 && i<10 :
        fmt.Println("5이상, 10 미만")
      
    case i >= 0 && i < 5 :
        fmt.Println("0이상, 5 미만")
      
    }
    
  • 또한 switch 분기문안에서 함수를 실행한 뒤, 그 결과값으로 분기할 수도 있음

    • 이때 함수를 실행한 뒤에 ; (세미콜론)을 붙여줌
    • case 에서는 값으로 분기할 수 없고 조건식만 사용 가능
    import (
        "fmt"
        "time"
    )
      
    func main() {
        fmt.Println("When's Saturday?")
        today := time.Now().Weekday()
        switch time.Saturday {
        case today + 0:
            fmt.Println("Today.")
        case today + 1:
            fmt.Println("Tomorrow.")
        case today + 2:
            fmt.Println("In two days.")
        default:
            fmt.Println("Too far away.")
        }
    }
    
    • 이때 case 5 : 이런식으로 값을 직접 주면 에러남

Categories:

Updated:

Comments