Heim >Backend-Entwicklung >Golang >Wie kann ich feststellen, ob ein Go-Struct-Feld explizit festgelegt wurde?

Wie kann ich feststellen, ob ein Go-Struct-Feld explizit festgelegt wurde?

Barbara Streisand
Barbara StreisandOriginal
2024-12-07 21:24:15570Durchsuche

How Can I Determine if a Go Struct Field Has Been Explicitly Set?

Standardwerte für Go-Strukturen

In Go haben Strukturen (Strukturen) Standardwerte für ihre Felder. Ganzzahlen (int) haben beispielsweise standardmäßig den Wert 0. Während dies in vielen Szenarien nützlich ist, kann es eine Herausforderung darstellen, wenn Sie ein Szenario haben, in dem 0 ein gültiger Wert ist. Dies macht es schwierig zu wissen, ob ein Feld in einer Struktur explizit festgelegt wurde oder nicht.

Unterscheidung zwischen Standard- und Set-Werten

Leider bietet Go keine Möglichkeit, direkt zu bestimmen, ob ein Feld auf seinen Standardwert gesetzt oder initialisiert wurde. Es gibt jedoch zwei Ansätze, die Sie anwenden können:

Zeiger verwenden

Sie können Zeiger für Felder verwenden, die möglicherweise nicht festgelegt sind. Zeiger haben einen Nullwert, den Sie verwenden können, um zu überprüfen, ob ein Feld festgelegt wurde:

type Test struct {
    TestIntOne *int
    TestIntTwo *int
}

In diesem Fall sind TestIntOne und TestIntTwo Zeiger auf ganze Zahlen. Wenn TestIntOne Null ist, bedeutet dies, dass es nicht gesetzt wurde, während es, wenn es nicht Null ist, auf einen Wert ungleich Null gesetzt wurde.

Verwenden einer Methode

Alternativ können Sie eine Methode erstellen, die das Feld festlegt und verfolgt, ob es festgelegt wurde oder nicht:

type Test struct {
    TestIntOne int
    TestIntTwo int

    isSetOne, isSetTwo bool
}

func (t *Test) SetIntOne(i int) {
    t.TestIntOne = i
    t.isSetOne = true
}

Mit dieser Methode können Sie die Einstellung von TestIntOne steuern, und die Eigenschaft isSetOne zeigt an, ob sie festgelegt wurde oder nicht.

Fazit

Obwohl Go-Strukturen Standardwerte für ihre Felder haben, gibt es keine direkte Möglichkeit festzustellen, ob ein Feld manuell festgelegt oder auf seinen Standardwert initialisiert wurde. Durch die Verwendung von Zeigern oder Methoden können Sie diese Einschränkung jedoch umgehen und den Status der Felder Ihrer Struktur beibehalten.

Das obige ist der detaillierte Inhalt vonWie kann ich feststellen, ob ein Go-Struct-Feld explizit festgelegt wurde?. 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