Pointers 为什么不可能解组为指针变量?

Pointers 为什么不可能解组为指针变量?,pointers,go,Pointers,Go,我在包级别使用指针变量: var config *configuration 但是,尝试对变量进行解组将导致以下错误:json:Unmarshalnil*main.configuration。但是,将指针解组为指向指针变量的指针是成功的。这是什么原因 为什么不可能解组为指针变量 这是可能的。事实上,这是必须的。无法对非指针进行解组 这个错误不是说你不能解组指针,而是说你不能解组零指针。指针必须指向可能为零值的有效变量 替换 var config *configuration 与 或 而且它应

我在包级别使用指针变量:

var config *configuration
但是,尝试对变量进行解组将导致以下错误:json:Unmarshalnil*main.configuration。但是,将指针解组为指向指针变量的指针是成功的。这是什么原因

为什么不可能解组为指针变量

这是可能的。事实上,这是必须的。无法对非指针进行解组

这个错误不是说你不能解组指针,而是说你不能解组零指针。指针必须指向可能为零值的有效变量

替换

var config *configuration


而且它应该可以正常工作。

因为它未初始化,因此为nil,这是文档中指定的对Unmarshal无效的参数。但是一个指向nil指针的指针不是nil本身,这就是为什么它是有效的。。。举例说明:。第一段指出,如果v为零,则返回一个错误。
var config *configuration
config := new(configuration)
config := &configuration{}