2 回答
TA贡献1772条经验 获得超6个赞
您可以在指针接收器上解组 .. 否则您只是在复制不相关的数据:
func (t *myTime) UnmarshalJSON(b []byte) error {
// ^^^^^^^ this
ts, err := strconv.Atoi(string(b))
if err != nil {
return err
}
*t = myTime(time.Unix(int64(ts), 0))
// ^^ this too
return nil
}
我不确定在指针接收器中重新分配数据有多“安全”/“惯用”..有人可以澄清吗?
(顺便说一句,这有效......不确定它是否是“最佳实践”)
TA贡献1906条经验 获得超10个赞
您不能分配UnmarshalJSON给一个值,您必须使用指针或结构,一种方法是:
type MyTime struct {
time.Time
}
func (t MyTime) String() string {
when := time.Time(t.Time)
return when.Format("2006-01-02 15:04:05")
}
func (t *MyTime) UnmarshalJSON(b []byte) error {
ts, err := strconv.Atoi(string(b))
if err != nil {
return err
}
t.Time = time.Unix(int64(ts), 0)
return nil
}
- 2 回答
- 0 关注
- 272 浏览
添加回答
举报