Heim >Backend-Entwicklung >Golang >Wie kann man in Go-Strukturen zwischen nicht gesetzten und leeren Werten unterscheiden?
Unterscheidung zwischen nicht gesetzten und leeren Werten in Go-Strukturen
In Go müssen Sie beim Definieren von Strukturen möglicherweise zwischen Werten unterscheiden, die sind absichtlich nicht gesetzt und Werte, die einfach leer sind. Dies kann für die Datenbankpersistenz und die Sicherstellung einer genauen Datenverarbeitung von entscheidender Bedeutung sein.
Betrachten Sie das folgende Beispiel:
<code class="go">type Organisation struct { Category string Code string Name string }</code>
Angenommen, Sie möchten feststellen, ob das Feld „Kategorie“ nie oder absichtlich festgelegt wurde als leere Zeichenfolge. Die Verwendung von Zeigern für Felder (z. B. *string) löst dieses Problem nicht, da der Nullwert für einen Zeiger Null ist, was nicht zwischen einem nicht gesetzten und einem leeren Wert unterscheiden kann.
Um dieses Problem zu beheben, können Sie Folgendes verwenden: ein benutzerdefinierter Typ wie sql.NullString aus dem Datenbank-/SQL-Paket. Es verfolgt den NULL-Status und ermöglicht Ihnen die Unterscheidung zwischen den folgenden Szenarien:
<code class="go">err := db.QueryRow("SELECT category FROM organisations WHERE id = ?", id).Scan(&org.Category)</code>So binden Sie einen NullString-Wert an einen Datenbankparameter:
<code class="go">_, err := db.Exec("INSERT INTO organisations (category) VALUES (?)", org.Category)</code>Mit diesem Ansatz können Sie zwischen nicht gesetzten und leeren Werten unterscheiden und eine genaue Datenbankpersistenz sicherstellen.
Das obige ist der detaillierte Inhalt vonWie kann man in Go-Strukturen zwischen nicht gesetzten und leeren Werten unterscheiden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!