当我们使用另一个结构进行包装时,Gorm golang sql.NullInt64不工作
用户可以被其他用户删除。那么,当我们使用另一个结构进行包装时,Gorm golang sql.NullInt64不工作,go,go-gorm,Go,Go Gorm,用户可以被其他用户删除。那么, type User struct { gorm.Model Email string `gorm:"type:varchar(100)"` DeletedBy sql.NullInt64 } 当我们创建新用户时,DeletedBy将为null。所以我使用了sql.NullInt64而不是int64。 但我无法转换为JSON {“电子邮件”:“xxxxx”, “删除方式”: {“Int64”:2,“Valid”:true} } 为此
type User struct {
gorm.Model
Email string `gorm:"type:varchar(100)"`
DeletedBy sql.NullInt64
}
当我们创建新用户时,DeletedBy将为null。所以我使用了sql.NullInt64而不是int64。
但我无法转换为JSON
{“电子邮件”:“xxxxx”,
“删除方式”:
{“Int64”:2,“Valid”:true}
}
为此,我努力了
但是Gorm将查询条件值发送为“[{2,true}]”在Go中,当您将一个类型声明为另一个类型的别名时,新类型不会保留另一个类型的方法。因此,这里:
type NullInt64 sql.NullInt64
新的NullInt64
类型具有与sql相同的结构和内存布局。NullInt64
但是它没有自己的方法,即按照您想要的方式工作所需的和方法
相反,您可以做的是嵌入sql.NullInt64
,这样您就可以开始了
type NullInt64 struct {
sql.NullInt64
}
在Go中,当您将一个类型声明为另一个类型的别名时,新类型不会保留另一个类型的方法。因此,这里:
type NullInt64 sql.NullInt64
新的NullInt64
类型具有与sql相同的结构和内存布局。NullInt64
但是它没有自己的方法,即按照您想要的方式工作所需的和方法
相反,您可以做的是嵌入sql.NullInt64
,这样您就可以开始了
type NullInt64 struct {
sql.NullInt64
}