有以下内容:
type FlexInt int
func (fi *FlexInt) UnmarshalJSON(data []byte) error {
if data[0] != '"' {
return json.Unmarshal(data, (*int)(fi))
}
var s string
if err := json.Unmarshal(data, &s); err != nil {
return err
}
i, err := strconv.Atoi(s)
if err != nil {
return err
}
*fi = FlexInt(i)
return nil
}
我明白它在做什么——但我不明白(*int)(fi)其中的一部分。查看指针的值,它与-fi相同。然而,当我将该行更改为简单时,它会执行无限循环(*int)(fi)(*int)(fi) == fifi
阿晨1998
噜噜哒
相关分类