-6
我用一個指針變量在封裝級:爲什麼解組指針變量不可能?
var config *configuration
但試圖解組此錯誤變量的結果:json: Unmarshal(nil *main.configuration)
。但是,解組成指針變量的指針是成功的。這是什麼原因?
我用一個指針變量在封裝級:爲什麼解組指針變量不可能?
var config *configuration
但試圖解組此錯誤變量的結果:json: Unmarshal(nil *main.configuration)
。但是,解組成指針變量的指針是成功的。這是什麼原因?
Why is unmarshaling into a pointer variable not possible?
這是可能的。事實上,這是必需的。解組到非指針是不可能的。
json: Unmarshal(nil *main.configuration)
此錯誤是不是說你不能解組的指針,它說你不能解組到零指針。指針必須指向一個有效的(可能是零值)變量。
更換
var config *configuration
隨着
config := new(configuration)
或
config := &configuration{}
,它應該只是罰款。
因爲它是未初始化的,所以'nil',這是對文檔中指定的Unmarshal無效的參數。但是一個指向零指針的指針本身並不是零,這就是爲什麼這是有效的。 – mkopriva
..來說明:https://play.golang.org/p/y3h_dD9bePU。第一段[here](https://golang.org/pkg/encoding/json/#Unmarshal)指出,如果v爲零,則返回錯誤。 – mkopriva