用户可以被其他用户删除。在那种情况下,
type User struct {
gorm.Model
Email string `gorm:"type:varchar(100)"`
DeletedBy sql.NullInt64
}
当我们创建新用户时,DeletedBy将为null。所以我使用sql.NullInt64而不是int64。 但我无法转换为JSON。
{" Email":" xxxxx", " DeletedBy&#34 ;: {"的Int64":2"有效":真} }
为此,我尝试了https://gist.github.com/smagch/bc34f861df65c8ea2e90 但Gorm将查询条件值发送为" [{2,true}]"
答案 0 :(得分:2)
在Go中,当您将类型声明为另一种类型的别名时,新类型无法保持其他类型的方法。所以这里:
type NullInt64 sql.NullInt64
您的新NullInt64
类型具有与sql.NullInt64
相同的结构和内存布局,但它没有其方法,即Scan和{{3它需要的方法以你想要的方式工作。
相反,你可以做的是嵌入sql.NullInt64
,你应该好好去。
type NullInt64 struct {
sql.NullInt64
}