【发布时间】:2019-08-29 00:59:11
【问题描述】:
如何在结构中创建方法 UnmarshalJSON,在内部使用 json.Unmarshal 而不会导致堆栈溢出?
package xapo
type Xapo struct {}
func (x Xapo) UnmarshalJSON(data []byte) error {
err := json.Unmarshal(data, &x)
if err != nil {
return err
}
fmt.Println("done!")
return nil
}
谁能解释一下为什么会发生堆栈溢出?可以修吗?
提前致谢。
【问题讨论】:
-
函数的用途是什么?
-
json.Unmarshal将识别&x的类型并最终再次调用x.UnmarshalJSON等等。我认为这可以通过一些额外的类型层来解决,但这完全取决于你为什么需要这个.