Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 알고리즘
- boj
- 리눅스
- OOM
- go
- codewars
- DP
- HBase
- programmers
- docker
- 주키퍼
- zookeeper
- Linux
- golang
- Python
- 튜토리얼
- Java
- 파이썬
- redis
- 자바
- dynamic programming
- 스칼라
- 코드워
- 프로그래머스
- Go언어
- scala
- leetcode
- gradle
- 문제풀이
- 동적프로그래밍
Archives
- Today
- Total
파이문
Go 튜토리얼 - switch 문 본문
728x90
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
'Go > Tutorial' 카테고리의 다른 글
Go 튜토리얼 - 배열, 슬라이스 (1) | 2017.01.30 |
---|---|
Go 튜토리얼 - 반복문, 제어문 (0) | 2017.01.15 |
Go 튜토리얼 - 변수 (0) | 2017.01.11 |
Comments