處理可為空的時間值
在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中文網其他相關文章!