我在包级别使用指针变量:
var config *configuration
但尝试解码到变量中会导致此错误:json: Unmarshal(nil *main.configuration)
。但是,解码为指向指针变量的指针是成功的。这是什么原因?
最佳答案
Why is unmarshaling into a pointer variable not possible?
这是可能的。事实上,这是必需的。解码为非指针是不可能的。
json: Unmarshal(nil *main.configuration)
这个错误并不是说你不能解码到一个指针,而是说你不能解码到一个 nil 指针。指针必须指向有效(可能为零值)变量。
替换
var config *configuration
与
config := new(configuration)
或
config := &configuration{}
它应该工作得很好。
关于pointers - 为什么解码到指针变量是不可能的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47996557/