Heim >Backend-Entwicklung >Golang >Wie kann ich nullfähige Datetime-Spalten in Go-Strukturen effizient verarbeiten?
Datetime-Handhabung in Go-Strukturen
In Go kann beim Füllen einer Struktur mit einem Datenbankdatensatz die Behandlung von nullbaren Datetime-Spalten zu einem werden Herausforderung. Betrachten Sie die folgende Struktur:
type Reminder struct { Id int CreatedAt time.Time RemindedAt *time.Time SenderId int ReceiverId int }
In diesem Beispiel wird RemindedAt als Zeiger dargestellt, um nullfähige Werte zu verarbeiten. Dieser Ansatz bringt jedoch die Notwendigkeit mit sich, im Code zwischen Nicht-Null- und Nullwerten zu unterscheiden, was umständlich sein kann.
Verbesserte Lösung
Um dieses Problem zu beheben, gehen Sie bietet die Typen pq.NullTime oder sql.NullTime (in Go 1.13), die eine elegantere Darstellung bieten Ansatz:
type Reminder struct { Id int CreatedAt time.Time RemindedAt pq.NullTime // or sql.NullTime SenderId int ReceiverId int }
NullTime definiert die folgenden Felder:
type NullTime struct { Time time.Time Valid bool // Valid is true if Time is not NULL }
Beim Scannen eines Datenbankeintrags gibt das Feld „Gültig“ an, ob Time einen gültigen Datums-/Uhrzeitwert hat oder null ist.
Verwendung
Zum Scannen einer Datenbankzeile in eine Erinnerung Struktur:
row := db.QueryRow("...") err := row.Scan(&id, &reminder.CreatedAt, &reminder.RemindedAt, &senderId, &receiverId)
Um auf das Feld „RemindedAt“ zuzugreifen, aktivieren Sie das Feld „Gültig“:
if reminder.RemindedAt.Valid { // RemindedAt has a valid datetime value } else { // RemindedAt is null }
Dieser Ansatz vereinfacht die Handhabung von nullbaren Datums-/Uhrzeitspalten in Go-Strukturen und macht eine manuelle Implementierung überflüssig Nullprüfung.
Das obige ist der detaillierte Inhalt vonWie kann ich nullfähige Datetime-Spalten in Go-Strukturen effizient verarbeiten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!