1. switch 원리
switch 비굣값 { // 검사하는 값
case 값1: // 비굣값과 값1이 같을 때 수행
문장
case 값2: // 비굣값과 값2이 같을 때 수행
문장
default: // 만족하는 case 가 없을 때 수행
문장
}
switch 키워드 다음에 비굣값이 온다.
첫번째 case 부터 검사를 하며, case 값이 없으면 default 문장을 수행 ( dafalut 는 생략가능)
2. switch 문 형태
1) 하나의 case에 여러 값 검사
package main
import "fmt"
func main() {
day := "monday"
switch day {
case "monday", "tuesday":
fmt.Println("월 화 출근")
case "wednesday", "thursday", "friday":
fmt.Println("수 목 금 출근")
}
}
// 출력 월 화 출근
2) if 문 처럼 true 가 되는 조건문을 검사
package main
import "fmt"
func main() {
temp := 18
switch true {
case temp < 10, temp > 30:
fmt.Println("바깥 활동하기 좋은 날씨가 아니다")
case temp >= 10 && temp < 20:
fmt.Println("약간 추울 수 있다")
case temp >= 15 && temp < 25:
fmt.Println("야회 활동하기 좋은 날씨")
default:
fmt.Println("따뜻")
}
}
// 출력 약간 추울수 있다
3. switch 초기문
if 와 마찬가지로 switch 문에서도 초기문을 넣을 수 있다.
switch 초기문; 비굣값 {
case 값1:
case 값2:
default:
}
package main
import "fmt"
func getMyAge() int {
return 22
}
func main() {
switch age := getMyAge(); true {
case age < 10:
fmt.Println("아이")
case age < 20:
fmt.Println("10대")
case age < 30:
fmt.Println("20대")
default:
fmt.Println("내 나이는", age)
}
}
// 20대
4. break
일반적으로 다른 언어에서는 switch 문의 각 case 종료 시에 break 문을 사용해야 다음 case로 코드가 이어서 실행되지 않는다.
하지만 Go 언어에서는 break 를 사용하지 않아도 case 하나를 실행 후 자동으로 switch 문을 빠져나가게 된다.
package main
import "fmt"
func main() {
a := 3
switch a {
case 1:
fmt.Println("a == 1")
break
case 2:
fmt.Println("a == 2")
break
case 3:
fmt.Println("a == 3")
default:
fmt.Println("a > 4")
}
}
// a == 3
Go 언어에서는 break를 사용하든 사용하지 않든 상관없이 case 하나를 실행 후 switch 문을 빠져나간다.
[참고] tucker 의 Go 언어 프로그래밍