In Go ist es bei der Arbeit mit Strukturen wichtig, zwischen Werten zu unterscheiden, die nicht gesetzt sind ( als „nil“ bezeichnet) und solche, die explizit leer sind (z. B. eine leere Zeichenfolge). Diese Unterscheidung ist von entscheidender Bedeutung, wenn Sie mit Datenbanken interagieren oder eine Datenvalidierung durchführen.
Betrachten Sie das folgende Beispiel:
<code class="go">type Organisation struct { Category string Code string Name string }</code>
Wenn Sie feststellen möchten, ob die Kategorie Wenn das Feld festgelegt wurde, können Sie nicht einfach überprüfen, ob sein Wert leer ist, da es selbst dann immer noch false zurückgibt, wenn es auf eine leere Zeichenfolge festgelegt ist.
Ein Ansatz ist um Zeiger für Felder zu verwenden, die möglicherweise nicht gesetzt sind. Standardmäßig ist der Wert eines Zeigers Null, was bedeutet, dass er auf keinen gültigen Wert zeigt. Dadurch können Sie leicht zwischen nicht gesetzten und nicht leeren Werten unterscheiden.
<code class="go">type Organisation struct { Category *string // Pointer to a string Code *string // Pointer to a string Name *string // Pointer to a string }</code>
Wenn das Kategoriefeld nicht gesetzt ist, ist sein Zeigerwert Null. Allerdings weist die Verwendung von Zeigern bestimmte Einschränkungen auf, wie z. B. zusätzliche Komplexität und potenzielle Verwirrung beim Zugriff auf die tatsächlichen Werte.
Beim Umgang mit Datenbanken stößt man häufig auf Nullwerte . Um sie ordnungsgemäß zu handhaben, sollten Sie die Verwendung einer Bibliothek eines Drittanbieters in Betracht ziehen, z. B. des Pakets „database/sql“ und seines Typs „sql.NullString“.
<code class="go">type NullString struct { String string Valid bool }</code>
sql.NullString ermöglicht Ihnen die Darstellung sowohl von Null- als auch Nicht-Null-Zeichenfolgenwerten . Sein String-Feld enthält den tatsächlichen Wert, während Valid angibt, ob der Wert null ist oder nicht. Dieser Typ bietet eine praktische Möglichkeit, mit Nullwerten in Datenbankoperationen umzugehen.
Das obige ist der detaillierte Inhalt vonUnterscheiden zwischen nicht gesetzten und leeren/leeren Werten in Go-Strukturen: Wie geht das richtig?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!