gorm struct使用自定义类型

自定义类型 需要实现 Scan(v interface{}) errorValue() (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
}

你可能感兴趣的:(golang,go)