处理可为空的时间值
在 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中文网其他相关文章!