파이문

Go 튜토리얼 - switch 문 본문

Go/Tutorial

Go 튜토리얼 - switch 문

민Z 2017. 1. 15. 01:48

Go switch 문

(Go switch example)



Go switch 문은 break를 사용하지 않습니다. (저는 파이썬 밖에 하지 않아서 switch 문에 대해서 잘 몰랐는데요. 알고보니 java에서는 매 케이스마다 break를 해주어야 하더군요.)

 i := 2
 fmt.Print("Write ", i, " as ")
 switch i {
    case 1:
        fmt.Println("one")
    case 2:
        fmt.Println("two")
    case 3:
        fmt.Println("three")
 }

물론 break를 명시하여도 에러가 나진 않습니다


Go에는 다른 언어와는 다른 생소한 키워드 fallthrough가 있는데요. 자바의 경우 break 문을 실행하지 않으면 모든 케이스에 대하여 검사합니다. 하지만 앞서 말했듯이 Go는 break를 명시하지 않아도 되는데요. 반대로 fallthorugh 키워드를 사용하면 자바에서 break문을 사용하지 않은 것 처럼 됩니다.


즉 자바의 break문 사용이 Go의 디폴트고,자바의 아무것도 명시 하지 않은 디폴트가 Go의 fallthorugh입니다.


예제를 살펴보면

package main
 
import "fmt"
 
func main() {
    grade(80)
}
 
func grade(val int) {
    switch {
    case val > 90:
        fmt.Println("A")
        fallthrough
    case val > 80:
        fmt.Println("B")
        fallthrough
    case val > 70:
        fmt.Println("C")
        fallthrough
    default:
        fmt.Println("Yes!")
    }
}

출력은 C와 Yes가 나오게 됩니다. fallthrough 키워드를 빼면 C만이 나오게 되겠죠.


또한 Go의 switch는 인터페이스 변수의 동적 타입을 확인하는데 사용될 수도 있습니다.

whatAmI := func(i interface{}) {
    switch t := i.(type) {
    case bool:
        fmt.Println("I'm a bool")
    case int:
        fmt.Println("I'm an int")
    default:
        fmt.Printf("Don't know type %T\n", t)
    }
}


참고

https://gosudaweb.gitbooks.io/effective-go-in-korean/content/control_structures.html#switch

https://gobyexample.com/switch

'Go > Tutorial' 카테고리의 다른 글

Go 튜토리얼 - 배열, 슬라이스  (1) 2017.01.30
Go 튜토리얼 - 반복문, 제어문  (0) 2017.01.15
Go 튜토리얼 - 변수  (0) 2017.01.11
Comments