Heim > Artikel > Backend-Entwicklung > Können Sie einen „reflect.Type“ in Go abrufen, ohne den Typ zu instanziieren oder seinen Namen als String zu verwenden?
Abrufen von Reflect.Type aus einem Typ oder seinem Namen in Go
Diese Frage untersucht, ob es möglich ist, den Reflect.Type von a abzurufen benutzerdefinierten Typ, wie „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 . Der folgende Codeausschnitt veranschaulicht diesen Ansatz:
var v1 reflect.Type = reflect.TypeOf((*t1)(nil)).Elem()
In diesem Beispiel nutzen wir einen typisierten Nullzeiger, um den Laufzeittyp „t1“ zu erhalten.
Was den zweiten Teil betrifft, das Abrufen Der „reflect.Type“ direkt aus dem Namen eines Typs wird 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.
Obwohl 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.
Das obige ist der detaillierte Inhalt vonKönnen Sie einen „reflect.Type“ in Go abrufen, ohne den Typ zu instanziieren oder seinen Namen als String zu verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!