tor*_*rek 7

T(x)Tx

从函数的声明中可以看出:

func (lt *LeaveType) UnmarshalJSON(b []byte) error {
ltLeaveTypeUnmarshalJSON*LeaveTypeencoding/jsonLeaveType*LeaveTypeLeaveType
encoding/jsonUnmarshalJSONUnmarshalJSONencoding/jsonencoding/json
LTLeaveTypeencoding/json*LeaveTypeLT

我们可以这样做:

func (lt *LeaveType) UnmarshalJSON(b []byte) error {
    type LT LeaveType
    var r LT
    err := json.Unmarshal(b, &r)
    if err != nil {
        panic(err)
    }
    // ...
}
rLeaveTyper*lt
*lt = LeaveType(r) // an ordinary conversion
*ltUnmarshalJSONrUnmarshalJSON
(*LT)(lt)*LT*LT(lt)*(LT(lt))