PHpullh
학습 라이브러리/Go/타입 스위치

GO · 기초 문법

타입 스위치

switch v.(type)으로 인터페이스 값의 타입에 따라 분기합니다. 여러 타입을 한 번에 처리할 수 있습니다.

기초 문법중급type-switchanyinterfacepattern-matching

핵심 설명

switch v.(type)으로 인터페이스 값의 타입에 따라 분기합니다. 여러 타입을 한 번에 처리할 수 있습니다.

Go code

package main

import "fmt"

func classify(v any) string {
	switch x := v.(type) {
	case nil:
		return "nil 값"
	case int, int64:
		return fmt.Sprintf("정수: %v", x)
	case string:
		return "문자열 길이: " + fmt.Sprint(len(x))
	case bool:
		if x {
			return "참"
		}
		return "거짓"
	case []int:
		return fmt.Sprintf("정수 슬라이스 (%d개)", len(x))
	default:
		return fmt.Sprintf("기타: %T", x)
	}
}

func main() {
	values := []any{42, "Go", true, nil, []int{1, 2}}
	for _, v := range values {
		fmt.Println(classify(v))
	}
}

학습 팁

타입 스위치에서 case int, int64:처럼 여러 타입을 나열하면, 변수 x는 원래 인터페이스 타입으로 남습니다.

주의할 점

타입 스위치와 일반 switch를 혼동하지 마세요. switch v.(type) 구문은 인터페이스 변수에서만 사용할 수 있습니다.

자주 묻는 질문

타입 스위치란 무엇인가요?

switch v.(type) 으로 인터페이스 값의 타입에 따라 분기합니다. 여러 타입을 한 번에 처리할 수 있습니다.

타입 스위치 학습 시 주의할 점은 무엇인가요?

타입 스위치와 일반 switch 를 혼동하지 마세요. switch v.(type) 구문은 인터페이스 변수에서만 사용할 수 있습니다.