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

Wie gehe ich mit Nullable-Zeitwerten in Go-Datenbankstrukturen um?

Patricia Arquette
Patricia ArquetteOriginal
2024-12-10 14:40:14628Durchsuche

How to Handle Nullable Time Values in Go Database Structs?

Umgang mit Nullable-Zeitwerten

Wenn Sie in Go mit Nullable-Datenbankspalten arbeiten, stehen Sie möglicherweise vor der Herausforderung, diese in Ihren Strukturen darzustellen. Stellen Sie sich eine Struktur wie die folgende vor:

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

Hier wird das RemindedAt-Feld als Zeiger markiert, um nullfähige Werte aufzunehmen. Dies führt jedoch dazu, dass Sie in Ihrem Code zwischen CreatedAt und RemindedAt unterscheiden müssen.

Eine elegantere Lösung besteht darin, spezielle Typen zu verwenden, die Nullwerte verarbeiten. Die pq-Bibliothek stellt pq.NullTime für diesen Zweck bereit, und die Standardbibliothek in Go 1.13 führte sql.NullTime ein.

Mit pq.NullTime können Sie Ihre Struktur wie folgt definieren:

import (
    "time"

    "github.com/lib/pq"
)

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

Dadurch können Sie nahtlos mit Nullable-Werten arbeiten, ohne dass eine explizite Zeigerbehandlung erforderlich ist. Der Typ pq.NullTime implementiert die Scanner- und Valuer-Schnittstellen und ermöglicht so die Verwendung mit Datenbankoperationen.

Das obige ist der detaillierte Inhalt vonWie gehe ich mit Nullable-Zeitwerten in Go-Datenbankstrukturen um?. 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