Heim > Backend-Entwicklung > Golang > Wie gehe ich am besten mit Nullable-Zeitwerten in Go-Strukturen um?

Wie gehe ich am besten mit Nullable-Zeitwerten in Go-Strukturen um?

Susan Sarandon
Freigeben: 2024-12-31 12:11:12
Original
396 Leute haben es durchsucht

How to Best Handle Nullable Time Values in Go Structs?

Umgang mit Nullable-Zeitwerten mit Strukturen in Go

Beim Arbeiten mit Datenstrukturen, die Nullable-Zeitwerte enthalten können, ist es wichtig, eine ordnungsgemäße Handhabung sicherzustellen dieser Werte. Betrachten Sie die folgende Struktur:

type Reminder struct {
    Id         int
    CreatedAt  time.Time
    RemindedAt *time.Time
    SenderId   int
    ReceiverId int
}
Nach dem Login kopieren

Hier wird das RemindedAt-Feld als Zeiger auf eine time.Time deklariert, da es möglicherweise null ist. Diese Unterscheidung erfordert jedoch, dass der Code den Unterschied zwischen CreatedAt und RemindedAt verarbeitet.

Um dieses Problem zu beheben, bietet Go mehrere Ansätze, um nullfähige Zeitwerte elegant zu verarbeiten:

Verwendung von pq.NullTime

Das pq-Paket des PostgreSQL Go-Treibers bietet den Typ pq.NullTime. Es besteht aus einem time.Time-Wert und einem booleschen Valid-Flag, das angibt, ob die Zeit gültig ist (nicht NULL).

import "github.com/lib/pq"

type Reminder struct {
    Id         int
    CreatedAt  time.Time
    RemindedAt pq.NullTime
    SenderId   int
    ReceiverId int
}
Nach dem Login kopieren

In diesem Fall ist RemindedAt ein pq.NullTime-Wert, und der Code kann dies überprüfen sein Valid-Flag, um zu bestimmen, ob die Zeit eingestellt ist.

Verwenden von sql.NullTime (Go 1.13 und oben)

Ab Go 1.13 führt die Standardbibliothek den Typ sql.NullTime ein, der einen ähnlichen Zweck wie pq.NullTime erfüllt.

import "database/sql"

type Reminder struct {
    Id         int
    CreatedAt  time.Time
    RemindedAt sql.NullTime
    SenderId   int
    ReceiverId int
}
Nach dem Login kopieren

Sowohl pq.NullTime als auch sql.NullTime implementiert die erforderlichen Schnittstellen zur Unterstützung des Datenbankscans und der Parameterbindung, sodass sie bequem mit Datenbankoperationen verwendet werden können.

Das obige ist der detaillierte Inhalt vonWie gehe ich am besten mit Nullable-Zeitwerten in Go-Strukturen um?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
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