Heim > Backend-Entwicklung > Golang > Wie kann ich mithilfe von Go Reflection den Namen eines Strukturfelds ermitteln?

Wie kann ich mithilfe von Go Reflection den Namen eines Strukturfelds ermitteln?

DDD
Freigeben: 2024-12-08 17:13:11
Original
602 Leute haben es durchsucht

How Can I Get the Name of a Struct Field Using Go Reflection?

Bestimmen des Strukturfeldnamens mithilfe von Reflection

In Go ist es möglich, mithilfe von Reflection dynamisch auf Strukturfelder zuzugreifen und diese zu bearbeiten. Eine häufige Herausforderung besteht jedoch darin, den Namen eines bestimmten Strukturfelds zu ermitteln.

Betrachten Sie das folgende Beispiel:

type A struct {
    Foo string
}

func (a *A) PrintFoo() {
    fmt.Println("Foo value is " + a.Foo)
}

func main() {
    a := &A{Foo: "afoo"}
    val := reflect.Indirect(reflect.ValueOf(a))
    fmt.Println(val.Field(0).Type().Name())
}
Nach dem Login kopieren

In diesem Code wird ein Zeiger auf eine Struktur A erstellt und die Der Zugriff auf den Wert erfolgt über Reflektion. Allerdings gibt fmt.Println(val.Field(0).Type().Name()) „string“ anstelle von „Foo“ aus.

Lösung

Um den Namen eines Feldes abzurufen, müssen Sie Field(0).Name anstelle von Type().Name() verwenden. Der folgende Code demonstriert, wie das geht:

fmt.Println(val.Field(0).Name())
Nach dem Login kopieren

Die Name-Methode in „reflect.StructField“ stellt den tatsächlichen Namen des Feldes bereit, nämlich „Foo“.

Weitere Überlegungen

Es ist wichtig zu beachten, dass sich Field(0) auf das erste Feld in der Struktur bezieht. Wenn Sie den Namen eines bestimmten Felds benötigen, können Sie dessen Index verwenden.

Außerdem gibt es keine Möglichkeit, den Feldnamen für einen Reflect.Value abzurufen, der einen bestimmten Feldwert darstellt. Diese Informationen werden nicht im Feldwert selbst gespeichert, sondern in der enthaltenden Struktur.

Das obige ist der detaillierte Inhalt vonWie kann ich mithilfe von Go Reflection den Namen eines Strukturfelds ermitteln?. 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