Heim > Backend-Entwicklung > Golang > Wie kann ich nullfähige Datetime-Spalten in Go-Strukturen effizient verarbeiten?

Wie kann ich nullfähige Datetime-Spalten in Go-Strukturen effizient verarbeiten?

DDD
Freigeben: 2024-12-19 19:00:21
Original
837 Leute haben es durchsucht

How Can I Efficiently Handle Nullable Datetime Columns in Go Structs?

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

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

NullTime definiert die folgenden Felder:

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

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

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

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!

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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage