0Pricing
Go Academy · 강의

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 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. if 문과 초기화 식
  2. for 반복문: 모든 패턴
  3. Go의 switch 문
  4. break, continue 및 레이블
← Go Academy(으)로 돌아가기