Heim > Backend-Entwicklung > Golang > Wie greife ich sicher auf verschachtelte Nullwerte in Go-Strukturen zu?

Wie greife ich sicher auf verschachtelte Nullwerte in Go-Strukturen zu?

Mary-Kate Olsen
Freigeben: 2024-12-27 20:43:10
Original
530 Leute haben es durchsucht

How to Safely Access Nested Nil Values in Go Structs?

Nullwerte in verschachtelten Strukturen testen

Bei der Arbeit mit verschachtelten Strukturen in Go kommt es häufig vor, dass bestimmte Felder möglicherweise Null sind aufgrund von „omitemptyempty“-Unmarshalling. Dies erfordert eine Methode für den zuverlässigen Zugriff auf tief verschachtelte Felder, ohne Laufzeitpaniken auszulösen.

Generischer Nulltest

Ein gängiger Ansatz besteht darin, mithilfe von if-Anweisungen manuell nach Nullwerten zu suchen. Dies kann jedoch insbesondere bei tief verschachtelten Strukturen mühsam werden. Eine allgemeinere Lösung besteht darin, Getter mit Zeigerempfängern in den Strukturen zu implementieren, die Nullfelder enthalten können.

Getter-Funktionen

Berücksichtigen Sie beispielsweise Foo, Bar und Baz-Strukturen:

type Bar struct {
    Bar string
    Baz *Baz
}

type Baz struct {
    Baz string
}
Nach dem Login kopieren

Wir können Getter definieren als folgt:

func (b *Bar) GetBaz() *Baz {
    if b == nil {
        return nil
    }
    return b.Baz
}

func (b *Baz) GetBaz() string {
    if b == nil {
        return ""
    }
    return b.Baz
}
Nach dem Login kopieren

Getter verwenden

Mit diesen Gettern können wir ohne Laufzeitfehler auf verschachtelte Felder zugreifen, selbst wenn einige Felder Null sind:

fmt.Println(f3.Bar.GetBaz().GetBaz()) // No panic
fmt.Println(f2.Bar.GetBaz().GetBaz()) // No panic
fmt.Println(f1.Bar.GetBaz().GetBaz()) // No panic

if baz := f2.Bar.GetBaz(); baz != nil {
    fmt.Println(baz.GetBaz())
} else {
    fmt.Println("something nil")
}
Nach dem Login kopieren

Dieser Ansatz gewährleistet die Typsicherheit und eliminiert Laufzeitpaniken, die mit dem Zugriff auf Nullzeiger verbunden sind. Es bietet außerdem eine prägnantere und elegantere Möglichkeit, mit verschachtelten Nullwerten umzugehen.

Das obige ist der detaillierte Inhalt vonWie greife ich sicher auf verschachtelte Nullwerte in Go-Strukturen 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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage