自定义类型 需要实现 Scan(v interface{}) error
和 Value() (driver.Value, error)
方法
如 自定义类型MyTime
type MyTime time.Time //2006-01-02 15:04:05
添加 Scan 和 Value 方法
var TimeFormat = "2006-01-02 15:04:05"
func (t *Time) Value() (driver.Value, error) {
return time.Time(*t).Format(TimeFormat), nil
}
func (t *Time) Scan(v interface{}) error {
switch vt := v.(type) {
case string:
tTime, _ := time.Parse(TimeFormat, vt)
*t = Time(tTime)
default:
return errors.New("time scan error")
}
return nil
}
gorm 使用MyTime
type Test struct {
ID int `json:"id" gorm:"column:id"`
InTime *MyTime `json:"in_time" gorm:"column:in_time" binding:"required"` //2006-01-02 15:04:05
}