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
DDDOriginal
2024-12-16 01:02:091021Durchsuche

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?

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)

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!

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