gpt4 book ai didi

database - 对可空结构字段使用 nil 或 Null* 哪个更好

转载 作者:搜寻专家 更新时间:2023-10-30 23:25:56 25 4
gpt4 key购买 nike

<分区>

Here 我看到一个关于结构中可为空字段的问题。从 Go 1.13 开始,您可以使用 sql.NullTime(之前在 pgmysql 中声明)。从现在开始,我们可以使用这两个选项来声明 ResolvedAt 可为空的时间字段:

一个。 ResolvedAt 为 NullTime:

type Event struct {
Id int
Resolved bool
CreatedAt time.Time
ResolvedAt sql.NullTime
}

B. ResolvedAt 作为指针:

type Event struct {
Id int
Resolved bool
CreatedAt time.Time
ResolvedAt *time.Time
}

Scan 方法没有区别:

rows, err := db.Query("SELECT * FROM Event")

for rows.Next() {
e:= new(Event)
err := rows.Scan(&e.Id, &e.CreatedAt, &e.ResolvedAt)
}

但是在测试 Null 时有一个区别:

// A. 
e.Resolved = (e.ResolvedAt != nil)
// B.
e.Resolved = (e.ResolvedAt.Valid)

在什么情况下应该使用 Null... 类型而不是指针?

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com