


Rufen Sie „reflect.Kind' eines Typs ab, der auf einem primitiven Typ basiert
Feb 09, 2024 pm 03:12 PMBei der PHP-Programmierung ist es eine wichtige Fähigkeit, einen Typ zu erhalten, der auf einem primitiven Typ basiert. Reflect.Kind ist eine Eigenschaft in der von PHP bereitgestellten Reflection-Klassenbibliothek, mit der der Datentyp einer Variablen bestimmt werden kann. Durch die Verwendung von „reflect.Kind“ können wir leicht den Typ der Variablen ermitteln und entsprechende Vorgänge und Verarbeitungen durchführen. Für PHP-Entwickler wird die Beherrschung dieser Fähigkeit dazu beitragen, den Reflexionsmechanismus besser zu verstehen und zu nutzen sowie die Lesbarkeit und Flexibilität des Codes zu verbessern. In diesem Artikel stellt der PHP-Editor Baicao ausführlich vor, wie man Reflect.Kind basierend auf primitiven Typen erhält, und stellt einige praktische Beispiele und Techniken vor, um den Lesern zu helfen, diesen Wissenspunkt besser zu beherrschen.
Frageninhalt
Ich möchte „reflect.kind“ als „reflect.interface“ für einen Typ verwenden, der eine Schnittstelle implementiert, dessen Implementierung jedoch auf einem primitiven Typ basiert: type id string
Eine andere Antwort auf diese Frage könnte sein, wie man den „reflect.type“ eines beliebigen Typs erhält, der „reflect.interfaces“ zurückgibt, wenn kind() aufgerufen wird.
Hier ist das vollständige Beispiel für den mobilen Spielplatz:
type ID interface { myid() } type id string func (id) myid() {} func main() { id := ID(id("test")) fmt.Println(id) fmt.Println(reflect.TypeOf(id)) // How to get the kind to return "reflect.Interface" from the var "id"? fmt.Println(reflect.TypeOf(id).Kind()) }
Lösung
reflect.typeof()
(和 reflect.valueof()
) 需要一个 接口{}
。基本上,无论您传递给 reflect.typeof()
的值是什么,如果它还不是接口值,它将隐式包装在 interface{}
中。如果传递的值已经是接口值,则其中存储的具体值将作为 interface{}
Weitersagen.
Um dieses „Umpacken“ zu vermeiden, das einer der seltenen Fälle ist, in denen ein Zeiger auf eine Schnittstelle sinnvoll ist, können Sie es hier tatsächlich nicht vermeiden. Sie müssen einen Zeiger auf den Schnittstellenwert übergeben.
Wenn Sie also einen Zeiger an eine Schnittstelle übergeben, wird der Zeiger in interface{}
值中。您可以使用 type.elem()
eingeschlossen, um den Typdeskriptor des „Point-to-Type“ zu erhalten: d. h. den Elementtyp des Zeigertyps, der der Typdeskriptor des sein wird Welchen Schnittstellentyp Sie suchen. p>
Beispiel:
id := id(id("test")) fmt.println(id) t := reflect.typeof(&id).elem() fmt.println(t) fmt.println(t.kind())
Welche Ergebnisse (versuchen Sie es auf dem go-Spielplatz):
test main.ID interface
Verwandte Fragen anzeigen: Was ist der Unterschied zwischen „reflect.valueof()“ und „value.elem()“ in go?
Das obige ist der detaillierte Inhalt vonRufen Sie „reflect.Kind' eines Typs ab, der auf einem primitiven Typ basiert. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heißer Artikel

Hot-Tools-Tags

Heißer Artikel

Heiße Artikel -Tags

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Der Preis von Bitcoin seit seiner Geburt 2009–2025. Die umfassendste Zusammenfassung der historischen BTC-Preise

Was tun, wenn die Zeit in der unteren rechten Ecke von Windows 11 abgelaufen ist_Was zu tun ist, wenn die Zeit in der unteren rechten Ecke von Windows 11 abgelaufen ist

Gibt es Community-Foren oder Diskussionsgruppen für Java-Funktionen, in denen ich Fragen stellen und darüber diskutieren kann?

So verwenden Sie den Code anderer Leute in Python

Was soll ich tun, wenn die Uhrzeit auf meinem Win11-Computer immer falsch ist? So stellen Sie die falsche Uhrzeit auf einem Windows 11-Computer ein

Häufige Ausnahmetypen und ihre Reparaturmaßnahmen in der Java-Funktionsentwicklung

Welche Beziehung besteht zwischen rekursiven Aufrufen und der Ausnahmebehandlung in Java-Funktionen?
