Go의 switch 문
태그가 있는 switch와 태그가 없는 switch, fallthrough
Go의 switch 문은(는) CoddyKit의 무료 Go Academy 강의입니다. 이것은 4개 중 3번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Go Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Go Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
switch 기초
Go의 switch는 C보다 강력합니다. 기본적으로 다음 경우로 넘어가지 않으며, 각 경우에 여러 값을 지정할 수 있습니다:
day := "Monday"
switch day {
case "Saturday", "Sunday":
fmt.Println("Weekend")
default:
fmt.Println("Weekday")
}암시적 다음 경우 실행 없음
Go에서는 각 case 본문이 자동으로 종료됩니다. break를 명시적으로 작성해야 하는 C와 다릅니다:
- 코드가 더 깔끔해지고 오류가 줄어듭니다
- C와 같은 동작이 필요할 때는
fallthrough를 명시적으로 사용합니다(드문 경우)
초기화 문이 있는 switch
if와 마찬가지로 switch에도 선택적 초기화 문을 사용할 수 있습니다:
switch os := runtime.GOOS; os {
case "linux":
fmt.Println("Linux")
case "darwin":
fmt.Println("macOS")
default:
fmt.Printf("Other: %s\n", os)
}태그 없는 switch(if-else 연결의 대안)
태그 없는 switch에는 키워드 뒤에 표현식이 없으며 각 case가 불리언 값을 평가합니다:
score := 75
switch {
case score >= 90:
fmt.Println("A")
case score >= 80:
fmt.Println("B")
case score >= 70:
fmt.Println("C")
default:
fmt.Println("F")
}타입 switch
타입 switch는 인터페이스 값의 동적 타입을 확인합니다:
func describe(i interface{}) {
switch v := i.(type) {
case int:
fmt.Printf("int: %d\n", v)
case string:
fmt.Printf("string: %s\n", v)
default:
fmt.Printf("unknown: %T\n", v)
}
}fallthrough
fallthrough를 사용하면 조건과 관계없이 다음 case 본문을 명시적으로 실행할 수 있습니다(대부분 필요하지 않습니다):
n := 1
switch n {
case 1:
fmt.Println("one")
fallthrough
case 2:
fmt.Println("one or two")
}각 case에 여러 값 지정
하나의 case에서 여러 값을 쉼표로 구분하여 나열합니다:
func isVowel(c byte) bool {
switch c {
case 'a', 'e', 'i', 'o', 'u':
return true
}
return false
}switch와 if-else 비교
다음과 같은 경우에는 switch를 사용합니다:
- 하나의 표현식을 여러 값과 비교하는 경우
- 인터페이스 디스패치를 위해 타입 switch를 사용하는 경우
- if-else 연결보다 가독성이 좋아지는 경우
조건이 서로 다른 불리언 표현식이라면 if-else를 사용합니다.
switch에서의 break
switch를 일찍 종료하려면 break를 사용합니다. switch 안에서 바깥쪽 반복문을 종료하려면 레이블이 지정된 break를 사용합니다:
loop:
for {
switch input() {
case "quit":
break loop // exits the for loop
}
}기본 경우
다른 case가 일치하지 않을 때 default case가 실행됩니다. 권장 사항은 다음과 같습니다:
- 열거형을 처리할 때는 예상하지 못한 값을 감지할 수 있도록 항상
default를 포함합니다 - 가독성을 위해 맨 아래에 배치합니다
- 타입 switch에서는 지원하지 않는 타입을 우아하게 처리하도록
default를 사용합니다
빠른 확인
Go에서 switch의 case가 일치하면 어떻게 됩니까? 실행이 다음 case로 계속 넘어갑니까?
복습: Go의 switch
Go의 switch는 깔끔하고 강력합니다:
- 암시적으로 다음 case로 넘어가지 않으며
fallthrough를 명시적으로 사용해야 합니다 - 임시 변수의 범위를 지정하는 초기화 문
- if-else 연결의 대안인 태그 없는 switch
- 인터페이스 디스패치를 위한 타입 switch
- 쉼표로 구분하여 하나의 case에 여러 값 지정
다음: break, continue, 레이블을 사용한 반복문 제어입니다.
자주 묻는 질문
“Go의 switch 문” 강의는 무료인가요?
네 — “Go의 switch 문” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Go Academy 강의 전체를 잠금 해제할 수 있습니다. Go Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
“Go의 switch 문”에서 뭘 배우나요?
태그가 있는 switch와 태그가 없는 switch, fallthrough 브라우저에서 직접 실행하는 실습 코드로 Go Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
Go Academy을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 Go Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 3번째 강의입니다.
“Go의 switch 문” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 Go Academy 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 Go Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- if 문과 초기화 식
- for 반복문: 모든 패턴
- Go의 switch 문
- break, continue 및 레이블