>백엔드 개발 >Golang >Go 언어로 유형 정보를 얻는 방법

Go 언어로 유형 정보를 얻는 방법

青灯夜游
青灯夜游원래의
2023-02-22 19:14:134705검색

go 언어에서는 리플렉션을 통해 유형 정보를 얻을 수 있으며, 리플렉트 패키지의 TypeOf() 함수만 호출하면 됩니다. 방법: 1. "reflect.TypeOf()" 함수를 사용하여 지정된 변수의 유형 객체를 얻습니다. 2. Name() 및 Kind()를 사용하여 유형 객체의 유형 정보를 얻습니다. .Name()" 및 "유형 개체 .Kind()".

Go 언어로 유형 정보를 얻는 방법

이 튜토리얼의 운영 환경: Windows 7 시스템, GO 버전 1.18, Dell G3 컴퓨터.

Go 언어에서는 리플렉션을 통해 유형 정보를 얻을 수 있습니다.

Go 언어에서는 Reflect.TypeOf 함수를 호출하여 인터페이스가 아닌 모든 유형의 값에서 Reflect.Type 값을 생성할 수 있습니다. Reflect.Type 값은 이 비인터페이스 값의 유형을 나타냅니다. 이 값을 통해 우리는 이 비인터페이스 유형에 대한 많은 정보를 얻을 수 있습니다. 물론 인터페이스 값을 Reflect.TypeOf 함수 호출에 전달할 수도 있지만 이 호출은 인터페이스 값의 동적 유형을 나타내는 Reflect.Type 값을 반환합니다.

사실, Reflect.TypeOf 함수의 유일한 매개변수 유형은 인터페이스{}이며, Reflect.TypeOf 함수는 항상 이 고유한 인터페이스 매개변수 값의 동적 유형을 나타내는 Reflect.Type 값을 반환합니다.

그렇다면 특정 인터페이스 유형을 나타내는 Reflect.Type 값을 얻는 방법은 무엇일까요? 우리는 아래에 소개될 몇 가지 간접적인 방법을 통해 이 목표를 달성해야 합니다.

Type Reflect.Type은 여러 메소드를 지정하는 인터페이스 유형입니다. 이러한 방법을 통해 Reflect.Type 값으로 표현되는 Go 타입의 다양한 정보를 관찰할 수 있습니다. 이러한 방법 중 일부는 모든 종류의 유형에 적용되고 일부는 하나 또는 몇 가지 유형에만 적용됩니다. 부적절한 Reflect.Type 소유자 값으로 메서드를 호출하면 런타임 시 패닉이 발생합니다.

reflect.TypeOf() 함수를 사용하여 모든 값의 유형 객체(reflect.Type)를 얻으세요. 프로그램은 유형 객체를 통해 모든 값의 유형 정보에 액세스할 수 있습니다. 유형 개체를 얻는 과정을 이해하기 위해 예를 사용하겠습니다.

package main
import (
    "fmt"
    "reflect"
)
func main() {
    var a int
    typeOfA := reflect.TypeOf(a)
    fmt.Println(typeOfA.Name(), typeOfA.Kind())
}

코드 출력은 다음과 같습니다.

Go 언어로 유형 정보를 얻는 방법

코드 설명은 다음과 같습니다.

  • 라인 10은 int 유형의 변수를 정의합니다.

  • 12행에서는 변수 a의 유형 객체 typeOfA가 Reflect.TypeOf()를 통해 얻어지며 유형은 Reflect.Type()입니다.

  • 14행에서는 typeOfA 유형 객체의 멤버 함수를 통해 typeOfA 변수의 유형 이름을 각각 int로 얻을 수 있으며 유형(Kind)은 int입니다.

지식 확장: 반사의 유형 및 종류

반사를 사용할 때 먼저 유형과 종류의 차이점을 이해해야 합니다. 프로그래밍에서는 가장 일반적으로 사용되는 타입이 타입이지만, 반영적으로 매우 다양한 타입을 구분해야 할 때에는 종류(Kind)를 사용합니다. 예를 들어, 포인터를 타입별로 통일적으로 판단해야 하는 경우에는 종류(Kind) 정보를 활용하는 것이 더 편리합니다.

위 내용은 Go 언어로 유형 정보를 얻는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.