Reflect.Type-Instanz einer Struktur abrufen, ohne die Struktur zu erstellen
Die Frage ergibt sich aus der Notwendigkeit, auf den Typ einer Struktur zuzugreifen, ohne die Struktur zu erstellen Erstellen einer tatsächlichen Instanz der Struktur, insbesondere zum dynamischen Laden von Problemlösungen. Die bestehende Lösung erfordert die Erstellung und Nullung der Struktur vor der Registrierung ihres Typs.
Die Antwort liegt in der Verwendung der Methode „reflect.TypeOf((*DummySolution)(nil)).Elem()“. Hier erstellen wir einen Nullzeiger auf die Struktur, ohne Speicher zuzuweisen. Die Elem-Methode nimmt den Zeiger und extrahiert seinen Elementtyp, wodurch wir effektiv die Typinformationen der Struktur erhalten.
So können Sie den in der Frage bereitgestellten Code ändern:
<code class="go">func Register(sol Solution) { solutionsRegistry.Set(reflect.TypeOf((*sol)(nil)).Elem()) }</code>
Durch Erstellen Mit dieser Änderung können Sie den Typ von DummySolution und anderen Lösungsstrukturen registrieren, ohne Instanzen zu erstellen, wodurch der Speicherzuweisungsaufwand vermieden und der Initialisierungsprozess vereinfacht wird.
Das obige ist der detaillierte Inhalt vonWie erhalte ich die „reflect.Type'-Instanz einer Struktur, ohne eine Instanz zu erstellen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!