这个来自json.Unmarshal文档的例子(为了简单使用Animal
而不是稍微修改[]Animal
)有效,没有错误:
// ...
var animals Animal
err := json.Unmarshal(jsonBlob, &animals)
// ...
但是这个稍微修改的例子没有:
// ...
var animals *Animal
err := json.Unmarshal(jsonBlob, animals)
// ...
它显示了这个确实没有帮助的模糊错误(看起来更像是函数调用而不是错误 IMO):
json: Unmarshal(nil *main.Animal)
这似乎是因为animals是一个未初始化的指针。但是文档说(强调我的):
Unmarshal 将 JSON 解组为指针指向的值。如果指针为 nil,则 Unmarshal 为其分配一个新值以指向它。
那么为什么在第二个示例中解组失败并显示出那个晦涩的错误呢?
(此外,它是“解组”还是“解组”(一个 L)?文档同时使用了两者。)
慕侠2389804
跃然一笑
相关分类