插入自定义时间,实现了 Scanner 和 Valuer——但仍然出错

Inserting custom time, Scanner and Valuer implemented — but still errs

我有一个自定义时间格式,它是一些自定义解组的结果:

type customTime struct {
    time.Time
}

我已经在 customTime 上实现了 ScannerValuer 接口,如下所示:

func (ct *customTime) Scan(value interface{}) error {
    ct.Time = value.(time.Time)
    return nil
}

func (ct *customTime) Value() (driver.Value, error) {
    return ct.Time, nil
}

但是当我尝试插入时它仍然出错:

sql: converting Exec argument type: unsupported type main.customTime, a struct

我错过了什么?

找到解决方案,ScannerValuer 应该在实际值而不是指向 customTime

的指针上实现
func (ct customTime) Scan(value interface{}) error {
    ct.Time = value.(time.Time)
    return nil
}

func (ct customTime) Value() (driver.Value, error) {
    return ct.Time, nil
}