Heim >Backend-Entwicklung >Golang >Wie kann ich zur Kompilierungszeit eine Go-Typ-Darstellung aus seinem Namen erhalten?

Wie kann ich zur Kompilierungszeit eine Go-Typ-Darstellung aus seinem Namen erhalten?

Susan Sarandon
Susan SarandonOriginal
2024-12-29 19:11:111023Durchsuche

How Can I Get a Go Type Representation from Its Name at Compile Time?

Typdarstellung aus dem Namen in Go with Reflection abrufen

Frage:

Wie kann man Erhalten Sie mithilfe der Go-Reflexion eine Typdarstellung aus seinem Namen Bibliotheken?

Antwort:

Das Verständnis dieser Frage hängt von ihrer Interpretation ab. Es gibt im Wesentlichen zwei Perspektiven:

Laufzeitunzugänglichkeit:

Wenn der Name des Typs zur Laufzeit als Zeichenfolge bereitgestellt wird, kann er nicht in eine Typdarstellung konvertiert werden. Typen, auf die nicht explizit verwiesen wird, sind möglicherweise nicht in der endgültigen ausführbaren Binärdatei enthalten, sodass zur Laufzeit nicht auf sie zugegriffen werden kann.

Zugänglichkeit zur „Codierungszeit“:

Allerdings während Bei der Codierung (Erstellung oder Generierung von Quellcode) ist es möglich, dies zu erreichen, ohne eine Variable des angegebenen Typs zu erstellen und aufzurufen Reflect.TypeOf().

Erhalten des eingebetteten Typs:

Man kann einen typisierten Nullzeigerwert verwenden und vom Reflect.Type-Deskriptor des Zeigers zum wechseln Basis- oder Elementtyp des Zeigers mit Type.Elem().

Beispiel:

t := reflect.TypeOf((*YourType)(nil)).Elem()

Dieser Ansatz ergibt einen Typdeskriptor (t), der mit dem Deskriptor (t2) identisch ist, der durch Erstellen einer Variablen erhalten wurde von der Art und Verwendung reflektieren.TypeOf():

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

fmt.Println(t, t2)
fmt.Println(t == t2)

Ausgabe:

main.YourType main.YourType
true

Schlussfolgerung:

Beim Abrufen des Typs Die Darstellung ist zur Laufzeit aufgrund von Kompilierungseinschränkungen nicht möglich. Sie ist jedoch während der Codierungszeit möglich, indem über den typisierten Nullzeiger auf den eingebetteten Typ zugegriffen wird Ansatz.

Das obige ist der detaillierte Inhalt vonWie kann ich zur Kompilierungszeit eine Go-Typ-Darstellung aus seinem Namen erhalten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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