Heim  >  Artikel  >  Backend-Entwicklung  >  So erhalten Sie Typinformationen in der Go-Sprache

So erhalten Sie Typinformationen in der Go-Sprache

青灯夜游
青灯夜游Original
2023-02-22 19:14:134661Durchsuche

In der Go-Sprache können Sie Typinformationen durch Reflektion erhalten; Sie müssen nur die TypeOf()-Funktion des Reflect-Pakets aufrufen. Methode: 1. Verwenden Sie die Funktion „reflect.TypeOf()“, um das Typobjekt der angegebenen Variablen abzurufen. 2. Verwenden Sie Name() und Kind(), um die Typinformationen des Typobjekts abzurufen .Name()“ und „Typobjekt .Kind()“.

So erhalten Sie Typinformationen in der Go-Sprache

Die Betriebsumgebung dieses Tutorials: Windows 7-System, GO Version 1.18, Dell G3-Computer.

In der Go-Sprache können Typinformationen durch Reflexion gewonnen werden.

In der Go-Sprache können wir durch Aufrufen der Funktion „Reflect.TypeOf“ einen Reflect.Type-Wert aus einem Wert eines beliebigen Nicht-Schnittstellentyps erstellen. Der Wert „reflect.Type“ stellt den Typ dieses Nicht-Schnittstellenwerts dar. Durch diesen Wert können wir viele Informationen über diesen Nicht-Schnittstellentyp erhalten. Natürlich können wir auch einen Schnittstellenwert an einen Reflect.TypeOf-Funktionsaufruf übergeben, aber dieser Aufruf gibt einen Reflect.Type-Wert zurück, der den dynamischen Typ des Schnittstellenwerts darstellt.

Tatsächlich ist der Typ des einzigen Parameters der Funktion „reflect.TypeOf“ interface{}, und die Funktion „reflect.TypeOf“ gibt immer einen Wert „reflect.Type“ zurück, der den dynamischen Typ dieses eindeutigen Schnittstellenparameterwerts darstellt.

Wie erhält man also einen Reflect.Type-Wert, der einen bestimmten Schnittstellentyp darstellt? Wir müssen dieses Ziel durch einige indirekte Wege erreichen, die im Folgenden vorgestellt werden.

Typeflect.Type ist ein Schnittstellentyp, der mehrere Methoden angibt. Mit diesen Methoden können wir verschiedene Informationen des Go-Typs beobachten, die durch einen Reflect.Type-Wert dargestellt werden. Einige dieser Methoden gelten für alle Arten von Typen, andere nur für einen oder einige wenige Typen. Der Aufruf einer Methode mit einem ungeeigneten Reflect.Type-Eigentümerwert führt zur Laufzeit zu einer Panik.

Verwenden Sie die Funktion „reflect.TypeOf()“, um ein Typobjekt (reflect.Type) mit einem beliebigen Wert abzurufen. Das Programm kann über das Typobjekt auf die Typinformationen eines beliebigen Werts zugreifen. Lassen Sie uns den Prozess des Erhaltens von Typobjekten anhand von Beispielen verstehen:

package main
import (
    "fmt"
    "reflect"
)
func main() {
    var a int
    typeOfA := reflect.TypeOf(a)
    fmt.Println(typeOfA.Name(), typeOfA.Kind())
}

Die Codeausgabe lautet wie folgt:

So erhalten Sie Typinformationen in der Go-Sprache

Die Codebeschreibung lautet wie folgt:

  • Zeile 10 definiert eine Variable vom Typ int.

  • In Zeile 12 wird das Typobjekt typeOfA der Variablen a über Reflect.TypeOf () abgerufen, und der Typ ist Reflect.Type ().

  • In Zeile 14 können Sie über die Mitgliedsfunktion des typeOfA-Typobjekts den Typnamen der typeOfA-Variablen int und den Typ (Kind) von int erhalten.

Wissen erweitern: Typ und Art der Reflexion

Wenn Sie Reflexion verwenden, müssen Sie zunächst den Unterschied zwischen Typ und Art verstehen. In der Programmierung ist der Typ der am häufigsten verwendete Typ. Wenn jedoch eine große Vielfalt von Typen unterschieden werden muss, wird in der Reflexion auch Art (Kind) verwendet. Wenn Sie beispielsweise Zeiger in Typen einheitlich beurteilen müssen, ist es bequemer, Art-Informationen zu verwenden.

Das obige ist der detaillierte Inhalt vonSo erhalten Sie Typinformationen in der Go-Sprache. 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