解組為引用和指標
在將JSON 資料反序列化為Go 結構的過程中,json.Unmarshal 函數起著至關重要的作用。但是,使用者在嘗試解組為引用和指標時可能會遇到差異。
請考慮以下程式碼片段:
// Unmarshaling into a reference variable var animals Animal err := json.Unmarshal(jsonBlob, &animals)
此程式碼成功將 JSON 資料解組為動物引用變數。
但是,當嘗試解組為指標時會出現不同的結果變數:
// Unmarshaling into a pointer variable var animals *Animal err := json.Unmarshal(jsonBlob, animals)
在這種情況下,Unmarshal 失敗並出現一個模糊錯誤:「json: Unmarshal( nil *main.Animal)」。遇到此錯誤是因為 Animals 是一個未初始化的指標。
Unmarshal 的文檔指出「如果指標為 nil,Unmarshal 會為其分配一個新值來指向。」但是,此行為似乎不適用於未初始化指標的情況,如錯誤訊息所示。
要解決此問題,建議在嘗試解組到指標變數 Animals 之前初始化它:
animals = &Animal{} err := json.Unmarshal(jsonBlob, animals)
透過此修改,解組過程應該會成功。
請注意,在文件中,術語「unmarshaling」被一致使用。
以上是為什麼在 Go 中解組為未初始化的指標失敗?的詳細內容。更多資訊請關注PHP中文網其他相關文章!