인스턴스화 없이 구조체 유형에 액세스
프로젝트 오일러 문제를 해결하기 위해 제공된 코드와 같이 구조체 유형을 동적으로 등록하는 것은 유용한 기술이 될 수 있습니다. . 그러나 현재 접근 방식에서는 유형을 등록하기 전에 구조체의 인스턴스를 생성하고 비워야 하는데, 이는 DummySolution과 같은 대규모 구조체의 경우 비효율적일 수 있습니다.
구조체의 Reflect.Type 인스턴스를 얻을 수 있는 방법이 있습니까? 물리적으로 인스턴스화하지 않고?
답은 Reflect.TypeOf 함수에 있습니다. 구조체에 nil 포인터를 제공함으로써 전체 구조체에 메모리를 할당하지 않고도 해당 유형에 액세스할 수 있습니다. Reflect.Type에 설명된 Elem 메소드를 사용하면 포인터(또는 슬라이스, 배열, 채널 또는 맵)의 요소 유형을 검색할 수 있습니다.
따라서 인스턴스화 없이 구조체의 유형을 얻으려면 , 다음 코드를 사용할 수 있습니다.
<code class="go">type DummySolution struct { data [100 * 1024 * 1024 * 1024]uint8 } func main() { // Get the type of DummySolution without creating an instance structType := reflect.TypeOf((*DummySolution)(nil)).Elem() // Register the type in your registry solutionsRegistry.Set(structType) }</code>
이 접근 방식은 더미 인스턴스를 할당하고 0으로 설정할 필요를 우회하여 동적 로딩을 위한 구조체 유형을 등록하는 더 효율적인 방법을 제공합니다.
위 내용은 ## Go에서 인스턴스화 없이 구조체 유형에 액세스할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!