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

Susan Sarandon
Freigeben: 2024-10-24 12:58:02
Original
706 Leute haben es durchsucht

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren
So binden Sie einen NullString-Wert an einen Datenbankparameter:

<code class="go">_, err := db.Exec("INSERT INTO organisations (category) VALUES (?)", org.Category)</code>
Nach dem Login kopieren
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!

Quelle:php
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!