PHpullh
학습 라이브러리/Go/빈 인터페이스 & any 타입

GO · 기초 문법

빈 인터페이스 & any 타입

any(= interface{})는 모든 타입을 담을 수 있는 빈 인터페이스입니다. 제네릭 도입 전 범용 컨테이너로 사용되었습니다.

기초 문법중급anyinterfaceempty-interfacegenerics

핵심 설명

any(= interface{})는 모든 타입을 담을 수 있는 빈 인터페이스입니다. 제네릭 도입 전 범용 컨테이너로 사용되었습니다.

Go code

package main

import "fmt"

// any는 interface{}의 별칭 (Go 1.18+)
func printAll(values ...any) {
	for i, v := range values {
		fmt.Printf("[%d] %T = %v\n", i, v, v)
	}
}

// 타입 안전한 대안: 제네릭
func first[T any](slice []T) (T, bool) {
	if len(slice) == 0 {
		var zero T
		return zero, false
	}
	return slice[0], true
}

func main() {
	printAll("Go", 42, true, 3.14)

	v, ok := first([]string{"a", "b"})
	fmt.Println(v, ok) // a true
}

학습 팁

Go 1.18부터 anyinterface{}의 공식 별칭입니다. 새 코드에서는 any를 사용하세요.

주의할 점

any 타입을 남용하면 타입 안전성을 잃습니다. 가능하면 제네릭을 사용하여 컴파일 타임에 타입을 검증하세요.

자주 묻는 질문

빈 인터페이스 & any 타입란 무엇인가요?

any (= interface{} )는 모든 타입을 담을 수 있는 빈 인터페이스입니다. 제네릭 도입 전 범용 컨테이너로 사용되었습니다.

빈 인터페이스 & any 타입 학습 시 주의할 점은 무엇인가요?

any 타입을 남용하면 타입 안전성을 잃습니다. 가능하면 제네릭을 사용하여 컴파일 타임에 타입을 검증하세요.