Heim >Backend-Entwicklung >Golang >Wie kann man in Go-Strukturen zwischen Null- und Leerwerten unterscheiden?

Wie kann man in Go-Strukturen zwischen Null- und Leerwerten unterscheiden?

Susan Sarandon
Susan SarandonOriginal
2024-10-24 11:50:01400Durchsuche

How to Differentiate Between Nil and Empty Values in Go Structs?

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:

  • Für MySQL-Benutzer sollten Sie die Verwendung des Typs „database/sql.NullString“ in Betracht ziehen.
  • Für PostgreSQL-Benutzer besteht ein alternativer Ansatz darin, einen benutzerdefinierten Typ in der Datenbank zu definieren die DECLARE TYPE-Syntax und dann einen entsprechenden Go-Typ verwenden, um ihn darzustellen.

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn