> 백엔드 개발 > Golang > 컴파일 타임에 해당 이름에서 Go 유형 표현을 어떻게 얻을 수 있나요?

컴파일 타임에 해당 이름에서 Go 유형 표현을 어떻게 얻을 수 있나요?

Susan Sarandon
풀어 주다: 2024-12-29 19:11:11
원래의
1003명이 탐색했습니다.

How Can I Get a Go Type Representation from Its Name at Compile Time?

리플렉션을 사용하여 Go의 이름에서 유형 표현 가져오기

질문:

어떻게 할 수 있나요? Go의 리플렉션을 사용하여 이름에서 유형 표현을 얻습니다. 도서관?

답변:

이 질문을 이해하는 것은 해석에 달려 있습니다. 기본적으로 두 가지 관점이 있습니다.

런타임 접근성 불가:

런타임 시 유형 이름이 문자열로 제공되는 경우 유형 표현으로 변환할 수 없습니다. 명시적으로 참조되지 않은 유형은 최종 실행 가능 바이너리에 포함되지 않아 런타임에 액세스할 수 없게 될 수 있습니다.

"코딩" 시간 접근성:

그러나 코딩(소스 코드 생성 또는 생성), 지정된 유형의 변수를 생성하고 호출하지 않고도 이를 달성할 수 있습니다. Reflect.TypeOf().

임베디드 유형 얻기:

유형이 지정된 nil 포인터 값을 사용하고 포인터의 Reflect.Type 설명자에서 다음을 사용하여 포인터의 기본 또는 요소 유형 Type.Elem().

예:

t := reflect.TypeOf((*YourType)(nil)).Elem()
로그인 후 복사

이 접근 방식은 변수를 생성하여 얻은 설명자(t2)와 동일한 유형 설명자(t)를 생성합니다. 종류와 사용방법 Reflect.TypeOf():

var x YourType
t2 := reflect.TypeOf(x)

fmt.Println(t, t2)
fmt.Println(t == t2)
로그인 후 복사

출력:

main.YourType main.YourType
true
로그인 후 복사

결론:

유형을 검색하는 동안 컴파일 제약으로 인해 런타임에는 표현이 가능하지 않습니다. 코딩 시간에는 다음을 사용하여 포함된 유형에 액세스하여 가능합니다. 입력된 nil 포인터 접근 방식.

위 내용은 컴파일 타임에 해당 이름에서 Go 유형 표현을 어떻게 얻을 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿