Frage:
Ist es in Go möglich, den Typ abzuleiten? Darstellung eines Datentyps anhand seines Namens mit Reflexion?
Antwort:
Die Antwort auf diese Frage hängt vom Kontext ab, in dem sie gestellt wird.
Zur Laufzeit:
Wenn der Typname zur Laufzeit als String verfügbar ist, ist dies nicht möglich um seine Typdarstellung mithilfe von Reflexion zu erhalten. Dies liegt daran, dass Typen, auf die nicht direkt verwiesen wird, möglicherweise nicht in der endgültigen ausführbaren Binärdatei enthalten sind.
Zum Zeitpunkt der „Codierung“:
Allerdings, wenn der Typname lautet Während der Codierungs- oder Codegenerierungsphase bekannt ist, ist es möglich, seine Typdarstellung zu erhalten, ohne eine Variable davon zu erstellen Typ.
Dies kann erreicht werden, indem der Typzeiger des Typs abgerufen, ein typisierter Nullzeigerwert erstellt und dann Type.Elem() verwendet wird, um zum Basistyp des Zeigers zu navigieren. Der resultierende Typdeskriptor ist identisch mit dem, der durch Erstellen und Reflektieren einer Variablen dieses Typs erhalten wird.
Beispiel:
t := reflect.TypeOf((*YourType)(nil)).Elem()
Das obige ist der detaillierte Inhalt vonKann Go Reflection einen Typ aus seinem String-Namen ableiten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!