인스턴스를 만들지 않고 Go에서 변수의 유형 정보를 어떻게 얻을 수 있나요?

Susan Sarandon
풀어 주다: 2024-11-01 05:34:02
원래의
768명이 탐색했습니다.

How can I get the type information of a variable in Go without creating an instance?

인스턴스가 없는 TypeOf와 그 결과를 함수에 전달

Go에서는 해당 유형의 인스턴스를 생성하지 않고도 변수의 유형 정보를 얻을 수 있습니다. . 이는 Reflect.TypeOf 함수를 사용하여 수행할 수 있습니다.

인스턴스 없이 TypeOf 사용

reflect.TypeOf 함수는 유형에 대한 포인터를 인수로 사용하고 Reflect.Type 값을 반환합니다. 유형에 대한 포인터는 * 연산자 뒤에 유형 이름을 사용하여 얻을 수 있습니다. 예:

<code class="go">t := reflect.TypeOf((*int)(nil))</code>
로그인 후 복사

이 코드 줄은 int 유형에 대한 포인터를 생성하고 이를 변수 t에 할당합니다.

기본 유형 가져오기

다른 유형에 대한 포인터인 유형에 대한 포인터인 경우, Reflect.Type 값의 Elem 메소드를 사용하여 기본 유형을 얻을 수 있습니다. 예:

<code class="go">t = reflect.TypeOf((*http.Request)(nil)).Elem()</code>
로그인 후 복사

이 코드 줄은 http.Request 유형에 대한 포인터를 생성하고 이를 변수 t에 할당합니다. 그런 다음 Reflect.Type 값에 대해 Elem 메소드를 호출하여 기본 유형인 http.Request를 가져옵니다.

함수에서 결과 사용

reflect.Type 값이 있으면 , 함수에 인수로 전달할 수 있습니다. 예를 들어 다음 함수는 Reflect.Type 값을 인수로 사용하고 유형 이름을 인쇄합니다.

<code class="go">func printType(t reflect.Type) {
    fmt.Println(t.Name())
}</code>
로그인 후 복사

이 함수는 다음과 같이 사용할 수 있습니다.

<code class="go">t := reflect.TypeOf((*int)(nil))
printType(t)</code>
로그인 후 복사

이것은 한 줄의 코드는 "int" 문자열을 인쇄합니다.

유형에 대한 상수 생성

어떤 경우에는 Reflect.TypeOf를 사용하는 대신 유형에 대한 상수를 생성하는 것이 더 효율적일 수 있습니다. 예를 들어, 다음 코드는 int 유형에 대한 상수를 생성합니다.

<code class="go">const TypeInt = reflect.TypeOf((*int)(nil))</code>
로그인 후 복사

이 상수는 Reflect.TypeOf 표현식 대신 사용할 수 있습니다.

<code class="go">printType(TypeInt)</code>
로그인 후 복사

이 코드는 문자열 "int"를 인쇄합니다.

위 내용은 인스턴스를 만들지 않고 Go에서 변수의 유형 정보를 어떻게 얻을 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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