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!