„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Können Sie einen „reflect.Type“ in Go abrufen, ohne den Typ zu instanziieren oder seinen Namen als String zu verwenden?

Können Sie einen „reflect.Type“ in Go abrufen, ohne den Typ zu instanziieren oder seinen Namen als String zu verwenden?

Veröffentlicht am 10.11.2024
Durchsuche:555

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

Abrufen des Reflect.Type von einem Typ oder seinem Namen in Go

Diese Frage untersucht, ob es möglich ist, den Reflect.Type von a abzurufen benutzerdefinierten Typ, wie etwa „t1“ im gegebenen Beispiel, ohne ihn zu instanziieren oder seinen Namen als String zu verwenden.

Was den ersten Teil der Frage betrifft: Ja, es ist möglich, dies durch die Verwendung einer typisierten Null zu erreichen . Das folgende Code-Snippet demonstriert diesen Ansatz:

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

In diesem Beispiel nutzen wir eine typisierte Null-Zeiger, um den Laufzeittyp von „t1“ zu erhalten.

Was den zweiten Teil betrifft, wird das direkte Abrufen von „reflect.Type“ aus dem Namen eines Typs in Go nicht unterstützt. Die Laufzeit verwaltet keine Zuordnung aller Typen in der aktuellen Binärdatei, was hierfür erforderlich wäre.

Es ist zwar denkbar, ein Typregistrierungspaket zu erstellen und Typen für die Suche nach Zeichenfolgen zu registrieren, dies wäre jedoch unweigerlich der Fall unvollständig sein. Darüber hinaus führen anonyme Typen zu Komplikationen, da ihre Namen möglicherweise nicht eindeutig sind.

Während Go theoretisch eine Funktion zum Abrufen eines Typs basierend auf seinem Namen anbieten könnte, ist es unwahrscheinlich, dass diese Funktion in naher Zukunft implementiert wird.

Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3