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!