pointers - 为什么解码到指针变量是不可能的?

标签 pointers go

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

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/

相关文章:

c++ - 编程原理与实践第27章侵入式列表错误?

go - Gomplate : bad character U+0022 '-'

go - 调用runtime.Gosched()与从 channel 接收之间用法上的区别?

c - 两个 32 位数字的乘法仅使用 8 位数字

C 程序 : Update unsigned char pointer array with function

go - 如何在 GoSublime 中禁用 func init() 自动完成功能?

go - 如何动态更改结构的json标签?

go - 无法使用ansible下载golang存储库

c - 在 C 编程中,我试图使用指针反向打印我的数组,但我似乎无法得到它

c++ - 在 C++ 中使用内存位置字符串