Heim >Backend-Entwicklung >Golang >Wie kann ich in Go elegant mit Nullable-Zeitfeldern umgehen?

Wie kann ich in Go elegant mit Nullable-Zeitfeldern umgehen?

Linda Hamilton
Linda HamiltonOriginal
2024-12-09 03:16:15836Durchsuche

How Can I Elegantly Handle Nullable Time Fields in Go?

Umgang mit Nullable-Feldern mit „Nullable Time.Time“

Bei der Arbeit mit Datenbankdatensätzen kommt es häufig vor, dass Nullable-Felder auf Spalten stoßen, die Nullables zulassen. Standardmäßig werden Zeiger verwendet, um Nullable-Felder in Go darzustellen, wie in der folgenden Reminder-Struktur gezeigt:

type Reminder struct {
    Id         int
    CreatedAt  time.Time
    RemindedAt *time.Time
    SenderId   int
    ReceiverId int
}

Die Verwendung von Zeigern führt jedoch dazu, dass bei der Erstellung des Codes zwischen Null- und Nicht-Nullable-Werten unterschieden werden muss komplexer. Gibt es eine elegantere Möglichkeit, mit Nullable-Feldern umzugehen?

Die Antwort liegt in der Verwendung spezieller Typen, die für den Umgang mit Nullable-Werten entwickelt wurden. Ein solcher Typ ist pq.NullTime aus der lib/pq-Bibliothek. Alternativ wurde mit Go 1.13 der Standardbibliothekstyp sql.NullTime eingeführt, der ebenfalls verwendet werden kann.

Hier ein kurzer Überblick über die Funktionsweise von pq.NullTime:

type NullTime struct {
    Time  time.Time
    Valid bool // Valid is true if Time is not NULL
}

pq.NullTime implementiert die Scanner- und Valuer-Schnittstellen, die das Lesen und Schreiben von nullbaren Werten aus der Datenbank ermöglichen. Dies ermöglicht Ihnen die nahtlose Darstellung von nullbaren Datums-/Uhrzeitfeldern in Ihrer Go-Struktur, ohne dass Zeiger oder bedingte Prüfungen erforderlich sind.

Um pq.NullTime oder sql.NullTime zu verwenden, ersetzen Sie einfach *time.Time durch den entsprechenden Typ in Ihrem Erinnerungsstruktur. Dies bietet eine einfachere und robustere Möglichkeit, Nullable-Felder in Ihrer Codebasis zu verarbeiten.

Das obige ist der detaillierte Inhalt vonWie kann ich in Go elegant mit Nullable-Zeitfeldern umgehen?. 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