从数据库扫描时,使用如下带有指针的结构而不是不带指针的结构有什么好处? type User struct { ID *UserID `json:"id,omitempty"` Email *string `json:"email"` Username *string `json:"username"` PasswordHash *[]byte `json:"password_hash"` CreatedAt *time.Time `json:"created_at"` }
3 回答
泛舟湖上清波郎朗
TA贡献1818条经验 获得超3个赞
如果您尝试将具有空 DB 值的行扫描为非指针类型,则行扫描操作将导致错误。
最佳实践是检查数据库表的架构。如果列不能有空值,请使用非指针。如果可能为空(无论您认为可能性有多小),请使用指针。
如果您发现指针使用起来很乏味(即样板 nil 检查),请使用sql.NullString作为列字段。如果在行扫描期间遇到 NULL,则NullString
值将默认为空字符串。
Go 1.13 还添加了NullTime
etc. 来处理其他 Nullable 列类型。
隔江千里
TA贡献1906条经验 获得超10个赞
如果需要区分零值和空值,则在扫描解组时使用带有指针的结构是必要的。当相应值为 null 时, string/int/struct 将失败(或在解组时初始化为零值),而指向 string/int/struct 的指针将设置为 nil。
一只斗牛犬
TA贡献1784条经验 获得超2个赞
我建议使用Github 上 README 文件末尾pgx
提到的内容:lib/pg
对于需要新功能或可靠解决报告的错误的用户,我们建议使用正在积极开发的 pgx。
然后,您可以使用自定义 pgtype而不是 Go 内置的。
- 3 回答
- 0 关注
- 128 浏览
添加回答
举报
0/150
提交
取消