"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > 유형을 인스턴스화하거나 해당 이름을 문자열로 사용하지 않고 Go에서 `reflect.Type`을 검색할 수 있습니까?

유형을 인스턴스화하거나 해당 이름을 문자열로 사용하지 않고 Go에서 `reflect.Type`을 검색할 수 있습니까?

2024년 11월 10일에 게시됨
검색:172

Can You Retrieve a `reflect.Type` in Go Without Instantiating the Type or Using its Name as a String?

Go의 유형 또는 이름에서 Reflect.Type 검색

이 질문은 Reflect.Type을 얻을 수 있는지 여부를 탐구합니다. 인스턴스화하거나 이름을 문자열로 사용하지 않고 주어진 예에서 "t1"과 같은 사용자 정의 유형을 사용합니다.

질문의 첫 번째 부분에 관해서는 예, 유형화된 nil을 사용하여 이를 달성하는 것이 가능합니다. . 다음 코드 조각은 이 접근 방식을 보여줍니다.

var v1 reflect.Type = reflect.TypeOf((*t1)(nil)).Elem()

이 예에서는 형식화된 "t1"의 런타임 유형을 얻기 위한 nil 포인터.

두 번째 부분의 경우 유형 이름에서 직접 Reflect.Type을 검색하는 것은 Go에서 지원되지 않습니다. 런타임은 이 작업을 수행하는 데 필요한 현재 바이너리의 모든 유형에 대한 맵을 유지하지 않습니다.

유형 레지스트리 패키지를 만들고 문자열로 조회할 유형을 등록하는 것이 가능하지만 이는 불가피합니다. 불완전하다. 또한 익명 유형은 이름이 고유하지 않을 수 있으므로 복잡해집니다.

Go는 이론적으로 이름을 기반으로 유형을 검색하는 기능을 제공할 수 있지만 이 기능이 가까운 시일 내에 구현될 가능성은 낮습니다.

최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3