„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Wie kann ich zwischen Standard und explizit Nullwerten in Go -Strukturen unterscheiden?

Wie kann ich zwischen Standard und explizit Nullwerten in Go -Strukturen unterscheiden?

Gepostet am 2025-03-12
Durchsuche:546

How Can I Differentiate Between Default and Explicitly Set Zero Values in Go Structs?

Standardwerte und Unterscheidung nicht initialisierter Felder in Go

In Go haben primitive Typen Standardwerte. Zum Beispiel werden Ganzzahlen (int) auf 0 initialisiert. Wenn Sie jedoch mit Strukturen arbeiten, kann die Unterscheidung zwischen einem 0 -Wert und einem nicht initialisierten Feld herausfordernd sein. "Protokoll" importieren " Tippen Sie die Teststruktur { TESTINTONE INT testinttwo int } func main () { S: = Test {testintone: 0} log.println (s) }

In diesem Code sind sowohl TestIntone als auch testintTwo Null. TestIntone wurde jedoch explizit auf 0 gesetzt, während TestIntTwo vom Standardwert initialisiert wurde. Diese Mehrdeutigkeit kann zu Verwirrung führen, um festzustellen, welche Felder explizit eingestellt wurden.

package main

import "log"

type test struct {
    testIntOne int
    testIntTwo int
}

func main() {
    s := test{testIntOne: 0}

    log.Println(s)
}
Ist es möglich, zwischen diesen beiden Fällen zu unterscheiden? Daher ist es unmöglich zu wissen, ob ein Nullwert das Ergebnis der Initialisierung oder eine absichtliche Zuweisung ist.

Workarounds

verwenden Zeiger. nil.

type test struct { testintone *int testinttwo *int }

  • Erstellen Sie eine Setter -Methode: Sie können eine Methode erstellen, um den Wert eines Feldes festzulegen und zu verfolgen, ob es festgelegt wurde.
type test struct {
    testIntOne *int
    testIntTwo *int
}
Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3