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!