首頁 > 後端開發 > Golang > 如何最好地處理 Go 結構中的可空時間值?

如何最好地處理 Go 結構中的可空時間值?

Susan Sarandon
發布: 2024-12-31 12:11:12
原創
395 人瀏覽過

How to Best Handle Nullable Time Values in Go Structs?

在Go 中使用結構處理可為空時間值

在處理可能包含可為空時間值的資料結構時,確保正確處理非常重要這些值。考慮以下結構:

type Reminder struct {
    Id         int
    CreatedAt  time.Time
    RemindedAt *time.Time
    SenderId   int
    ReceiverId int
}
登入後複製

這裡,RemindAt 欄位被宣告為指向 time.Time 的指針,因為它有可能為 null。然而,這種差異要求程式碼能夠處理 CreatedAt 和 RemindAt 之間的差異。

為了解決這個問題,Go 提供了幾種方法來優雅地處理可為null 的時間值:

使用pq.NullTime

PostgreSQL Go 驅動程式中的pq 套件提供了pq.NullTime 類型。它由一個 time.Time 值和一個 Valid 布林標誌組成,指示時間是否有效(不為 NULL)。

import "github.com/lib/pq"

type Reminder struct {
    Id         int
    CreatedAt  time.Time
    RemindedAt pq.NullTime
    SenderId   int
    ReceiverId int
}
登入後複製

在這種情況下,RemindAt 是一個 pq.NullTime 值,程式碼可以檢查它的有效標誌來決定是否設定了時間。

使用sql.NullTime (Go 1.13 和上)

從Go 1.13 開始,標準庫引入了sql.NullTime 類型,它的用途與pq.NullTime 類似。

import "database/sql"

type Reminder struct {
    Id         int
    CreatedAt  time.Time
    RemindedAt sql.NullTime
    SenderId   int
    ReceiverId int
}
登入後複製

pq.NullTime 和sql.NullTime 實作了必要的介面來支援資料庫掃描和參數綁定,方便與資料庫操作一起使用。

以上是如何最好地處理 Go 結構中的可空時間值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板