Heim > Backend-Entwicklung > Golang > Kann Go Reflection die Darstellung eines Typs direkt aus seinem Namen ermitteln?

Kann Go Reflection die Darstellung eines Typs direkt aus seinem Namen ermitteln?

Patricia Arquette
Freigeben: 2024-12-24 17:39:15
Original
573 Leute haben es durchsucht

Can Go Reflection Directly Obtain a Type's Representation from its Name?

Typdarstellung direkt aus dem Namen in Go über Reflexion erhalten

Es stellt sich die Frage, ob es möglich ist, die Reflexionsbibliotheken von Go zum Ableiten des Typs zu verwenden Darstellung eines Typs allein durch seinen Namen. Die Motivation hinter dieser Frage liegt in einer Bibliothek, in der Benutzer Typdarstellungen für Codegenerierungszwecke bereitstellen müssen.

Zur Laufzeit

Diese direkte Konvertierung ist zur Laufzeit mit a nicht möglich String-Darstellung des Typnamens. Typen, auf die während der Kompilierung nicht explizit verwiesen wird, sind möglicherweise nicht in der ausführbaren Binärdatei vorhanden, sodass sie zur Laufzeit „unbekannt“ sind. Eine ausführliche Erklärung finden Sie unter „Aufteilen von Client-/Servercode“. Problemumgehungen finden Sie unter „Alle Funktionen mit speziellem Präfix oder Suffix in Golang aufrufen“.

Während der Codierung

Während des Schreibens oder Generierens des Quellcodes ist dies jedoch möglich um dies zu erreichen, ohne eine Variable des angegebenen Typs zu erstellen und „reflect.TypeOf()“ aufzurufen. Indem man mit einem Zeiger auf den Typ beginnt und einen typisierten Nullzeigerwert verwendet, kann man mit Type.Elem() vom Typdeskriptor des Zeigers zum Deskriptor des Basistyps navigieren.

Hier ist ein Beispiel:

t := reflect.TypeOf((*YourType)(nil)).Elem()
Nach dem Login kopieren

Dieser Typdeskriptor, dargestellt durch die Variable t, entspricht dem t2-Deskriptor, der aus der Erstellung einer Variablen x des Typs abgeleitet wird YourType und Anwenden vonflect.TypeOf():

var x YourType
t2 := reflect.TypeOf(x)

fmt.Println(t, t2)
fmt.Println(t == t2)
Nach dem Login kopieren

Ausgabe:

main.YourType main.YourType
true
Nach dem Login kopieren

(Probieren Sie es auf dem Go Playground aus)

Das obige ist der detaillierte Inhalt vonKann Go Reflection die Darstellung eines Typs direkt aus seinem Namen ermitteln?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage