構造体を作成せずに構造体の Reflect.Type インスタンスを取得する
この質問は、構造体を作成せずに構造体の型にアクセスする必要があることから生じます。特に問題の解決策を動的に読み込むために、構造体の実際のインスタンスを作成します。既存のソリューションでは、型を登録する前に構造体の作成とゼロ化が必要です。
その答えは、reflect.TypeOf((*DummySolution)(nil)).Elem() メソッドを利用することにあります。ここでは、メモリを割り当てずに構造体への nil ポインタを作成します。 Elem メソッドはポインタを取得してその要素の型を抽出し、構造体の型情報を効果的に提供します。
質問で提供されたコードを変更する方法は次のとおりです。
<code class="go">func Register(sol Solution) { solutionsRegistry.Set(reflect.TypeOf((*sol)(nil)).Elem()) }</code>
次のようにします。この変更により、インスタンスを作成せずに DummySolution およびその他の Solution struct のタイプを登録できるため、メモリ割り当てのオーバーヘッドが回避され、初期化プロセスが簡素化されます。
以上がインスタンスを作成せずに構造体の `reflect.Type` インスタンスを取得する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。