>  기사  >  백엔드 개발  >  Go에서 인스턴스 없이 유형을 얻는 방법은 무엇입니까?

Go에서 인스턴스 없이 유형을 얻는 방법은 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2024-10-31 06:19:02746검색

How to Get a Type Without an Instance in Go?

인스턴스가 없는 TypeOf: 함수에 결과 전달

Go에서는 인스턴스 없이 "Type"을 얻을 수 있습니다. 그런 종류의. 이는 Reflect.TypeOf()를 사용하여 달성할 수 있지만 일반적으로 예제에는 인스턴스가 포함됩니다.

인스턴스 없이 유형 가져오기

인스턴스 없이 "유형"을 획득하려면 인스턴스의 경우, "유형화된" nil을 할당할 수 있는 유형에 대한 포인터로 시작하는 것이 요령입니다. 이어서 .Elem()을 사용하여 기본 유형으로 알려진 지적 유형의 Reflect.Type 설명자를 얻을 수 있습니다.

<code class="go">t := reflect.TypeOf((*int)(nil)).Elem()
fmt.Println(t)

t = reflect.TypeOf((*http.Request)(nil)).Elem()
fmt.Println(t)

t = reflect.TypeOf((*os.File)(nil)).Elem()
fmt.Println(t)</code>

출력 예:

int
http.Request
os.File

유형 전달

유형을 전달하고 스위치에서 활용해야 하는 경우 참조용으로 전역 변수에 생성하고 저장하세요.

<code class="go">var (
    intType         = reflect.TypeOf((*int)(nil))
    httpRequestType = reflect.TypeOf((*http.Request)(nil))
    osFileType      = reflect.TypeOf((*os.File)(nil))
    int64Type       = reflect.TypeOf((*uint64)(nil))
)

func printType(t reflect.Type) {
    switch t {
    case intType:
        fmt.Println("Type: int")
    case httpRequestType:
        fmt.Println("Type: http.request")
    case osFileType:
        fmt.Println("Type: os.file")
    case int64Type:
        fmt.Println("Type: uint64")
    default:
        fmt.Println("Type: Other")
    }
}

func main() {
    printType(intType)
    printType(httpRequestType)
    printType(osFileType)
    printType(int64Type)
}</code>

간단한 접근 방식

비교 목적으로만 유형을 활용하는 경우 Reflect 대신 상수 사용을 고려하세요.Type:

<code class="go">type TypeDesc int

const (
    typeInt TypeDesc = iota
    typeHttpRequest
    typeOsFile
    typeInt64
)

func printType(t TypeDesc) {
    switch t {
    case typeInt:
        fmt.Println("Type: int")
    case typeHttpRequest:
        fmt.Println("Type: http.request")
    case typeOsFile:
        fmt.Println("Type: os.file")
    case typeInt64:
        fmt.Println("Type: uint64")
    default:
        fmt.Println("Type: Other")
    }
}

func main() {
    printType(typeInt)
    printType(typeHttpRequest)
    printType(typeOsFile)
    printType(typeInt64)
}</code>

위 내용은 Go에서 인스턴스 없이 유형을 얻는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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