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!