Heim >Backend-Entwicklung >Golang >Wie kann man in Go-Strukturen zwischen nicht gesetzten und leeren Werten unterscheiden?

Wie kann man in Go-Strukturen zwischen nicht gesetzten und leeren Werten unterscheiden?

Susan Sarandon
Susan SarandonOriginal
2024-10-24 12:58:02833Durchsuche

How to Distinguish Between Unset and Empty Values in Go Structs?

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:

  • unset: NullString{String: "", Valid: false}
  • leerer String: NullString{String: "", Gültig: wahr🎜>
  • nicht leerer String: NullString{String: "value", Gültig: wahr}
Während des Datenbankscans und der Parameterbindung verarbeitet der Typ sql.NullString den NULL-Status automatisch.

Um beispielsweise in ein NullString-Feld zu scannen:

<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!

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