数据库null值
问题点:数据库在int,string等类型时,同时可能允许null值,但是go中int,string等类型不允许null值,数据类型不一致就会报错。
解决方法,自定义结构体实现以下接口
用于Gorm等数据库插件的扫描和写入数据库。
func (i *NullString) Scan(value any) error
func (i NullString) Value() (driver.Value, error)可以实现JSON序列化和反序列化。
func (i NullString) MarshalJSON() ([]byte, error)
func (i *NullString) UnmarshalJSON(data []byte) error用于gin框架的地址栏param参数绑定接口
func (i *NullString) UnmarshalParam(param string) error用于fmt等格式化输出(可选)
func (i NullString) String() string扩展了四个可为null类型:
- NullFloat、NullInt:支持前端传递null、字符串数字、数字
go
core.NullFloat
core.NullInt
core.NullString
core.NullTime