首页 >后端开发 >Golang >如何处理 Go 数据库结构中的可为空时间值?

如何处理 Go 数据库结构中的可为空时间值?

Patricia Arquette
Patricia Arquette原创
2024-12-10 14:40:14628浏览

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