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 關注
- 296 瀏覽
添加回答
舉報