golang各类型都有自己的零值,但是在数据库中都是非空的,因此需要一种结构来表达数据库中值为空的字段。
关于 nil
相关的我就不写了,就说一个:只有类型和值均为 nil
的变量才等于 nil
。
database/sql
可以看到定义的struct中包含两个字段,一个是对应基本类型的值,另一个是 Valid
,在字段注释可以看到:
// Valid is true if Float64 is not NULL
即是用于表示对应的数据库值是否为空,如果 Valid
为真,则值非空,即数据库中值和基本类型字段的值相同; Valid
为假,数据库中对应字段的值为 NULL
。
GORM
使用 sql 中定义的 Null 相关类型来定义模型字段即可实现。
详情略(懒💤