Heim > Backend-Entwicklung > Golang > Wie greife ich mit dem Reflect-Paket von Go auf Strukturfeld-Tags zu?

Wie greife ich mit dem Reflect-Paket von Go auf Strukturfeld-Tags zu?

DDD
Freigeben: 2024-12-16 01:02:09
Original
965 Leute haben es durchsucht

How to Access Struct Field Tags Using Go's Reflect Package?

Zugriff auf Strukturfeld-Tags über das Reflect-Paket von Go

Das Reflektieren des Felds einer Struktur und das Abrufen seiner Tag-Werte kann mit dem Reflect-Paket von Go erreicht werden. Betrachten Sie das folgende Beispiel:

type User struct {
    name    string `json:"name-field"`
    age     int
}

// ...

user := &User{"John Doe The Fourth", 20}
getStructTag(user.name) // How to obtain the tag value here?
Nach dem Login kopieren

LÖSUNG

Die Übergabe der gesamten Struktur an getStructTag ist nicht erforderlich. Stattdessen können wir die Funktion „reflect.TypeOf“ verwenden, um den Typ der Struktur abzurufen, und die Methode „Elem“, um den zugrunde liegenden Werttyp abzurufen. Anschließend verwenden wir FieldByName, um auf das gewünschte Strukturfeld zuzugreifen.

field, ok := reflect.TypeOf(user).Elem().FieldByName("name")
if !ok {
    // Handle error
}

tag := string(field.Tag)
Nach dem Login kopieren

In diesem Fall verwenden wir Elem, da „user“ ein Zeiger auf eine Struktur ist. Durch Zugriff auf das Feld „FieldByName“ können wir direkt das dem Feld „Name“ entsprechende „reflect.StructField“ abrufen. Das Tag-Attribut des erfassten Felds bietet Zugriff auf den Tag-Wert.

DEMONSTRATION

Ein interaktives Beispiel dieser Technik finden Sie unter folgendem Link: [Reflecting on ein Strukturfeld-Tag](https://play.golang.org/p/_M9Q-r1fuzq).

Das obige ist der detaillierte Inhalt vonWie greife ich mit dem Reflect-Paket von Go auf Strukturfeld-Tags zu?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage