Heim >Backend-Entwicklung >Golang >Wie kann man in Go-Strukturen zwischen Null- und Leerwerten unterscheiden?
Unterscheidung zwischen Null- und leeren Werten in Go-Strukturen
In Go kann es schwierig sein, zwischen einem Nullwert (d. h. niemals) zu unterscheiden set) und einen leeren oder leeren Wert (z. B. eine leere Zeichenfolge). Diese Unterscheidung ist entscheidend, wenn es um Daten aus einer Datenbank oder Benutzereingaben geht.
Problem:
Bedenken Sie die folgende Go-Struktur:
type Organisation struct { Category string Code string Name string }
Wenn ein Kategoriefeld vom Benutzer nicht als leere Zeichenfolge festgelegt oder gespeichert wird, muss unbedingt festgestellt werden, ob dieser Wert einen fehlenden Wert oder eine leere Benutzerauswahl darstellt.
Lösung:
Ein Ansatz ist die Verwendung von Zeigerfeldern:
type Organisation struct { Category *string Code *string Name *string }
Bei Zeigerfeldern stellt ein Nullwert ein nicht gesetztes Feld dar, während ein Nicht-Null-Wert mit einer leeren Zeichenfolge eine leere Auswahl anzeigt.
Datenbankhandhabung:
In Go ist der Nullwert für einen String-Typ ein leerer String. Daher ist es bei Verwendung des Standard-String-Typs unmöglich, zwischen einem nicht gesetzten und einem leeren String-Feld zu unterscheiden. Für die Datenbankintegration:
Beispiel:
Hier ist ein Beispiel mit sql.NullString:
<code class="go">type Organisation struct { Category sql.NullString Code string Name string } // Check if Category is set and not NULL if organisation.Category.Valid && organisation.Category.String != "" { // Category was set and has a value } else { // Category is either unset or NULL }</code>
Mit diesem Ansatz können Sie zwischen nicht gesetzten und leeren Zeichenfolgewerten unterscheiden und so die ordnungsgemäße Verarbeitung von Daten in Datenbankoperationen sicherstellen.
Das obige ist der detaillierte Inhalt vonWie kann man in Go-Strukturen zwischen Null- und Leerwerten unterscheiden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!