首頁 >後端開發 >Golang >如何處理 Go 資料庫結構中的可為空時間值?

如何處理 Go 資料庫結構中的可為空時間值?

Patricia Arquette
Patricia Arquette原創
2024-12-10 14:40:14627瀏覽

How to Handle Nullable Time Values in Go Database Structs?

處理可為空的時間值

在Go 中使用可為空的資料庫列時,您可能會遇到在結構中表示它們的挑戰。考慮如下所示的結構:

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

這裡,RemindAt 欄位被標記為一個指標以容納可為 null 的值。但是,這需要在程式碼中區分 CreatedAt 和 RemindAt。

更優雅的解決方案是使用處理可為 null 值的專用類型。 pq 函式庫為此提供了 pq.NullTime,Go 1.13 中的標準函式庫引入了 sql.NullTime。

使用 pq.NullTime,您可以將結構定義為:

import (
    "time"

    "github.com/lib/pq"
)

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

這使您可以無縫地使用可為 null 的值,而無需明確的指針處理。 pq.NullTime 類型實作了 Scanner 和 Valuer 接口,使其能夠與資料庫操作一起使用。

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

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn