2017-12-27 352 views
-6

我用一個指針變量在封裝級:爲什麼解組指針變量不可能?

var config *configuration 

但試圖解組此錯誤變量的結果:json: Unmarshal(nil *main.configuration)。但是,解組成指針變量的指針是成功的。這是什麼原因?

+4

因爲它是未初始化的,所以'nil',這是對文檔中指定的Unmarshal無效的參數。但是一個指向零指針的指針本身並不是零,這就是爲什麼這是有效的。 – mkopriva

+1

..來說明:https://play.golang.org/p/y3h_dD9bePU。第一段[here](https://golang.org/pkg/encoding/json/#Unmarshal)指出,如果v爲零,則返回錯誤。 – mkopriva

回答

3

Why is unmarshaling into a pointer variable not possible?

這是可能的。事實上,這是必需的。解組到非指針是不可能的。

json: Unmarshal(nil *main.configuration) 

此錯誤是不是說你不能解組的指針,它說你不能解組到零指針。指針必須指向一個有效的(可能是零值)變量。

更換

var config *configuration 

隨着

config := new(configuration) 

config := &configuration{} 

,它應該只是罰款。

相關問題