最近,使用者註意到在傳遞指標時使用 json.Unmarshal 出現意外行為。讓我們研究一下為什麼會有差異。
在官方文件中,我們遇到了這樣的說法:如果指針最初為nil,Unmarshal 會自動分配一個新值來指向:
Unmarshal 將JSON 解組為指針 指向的值。如果指標為 nil,Unmarshal 會為其指派一個新值來指向。
但是,當嘗試將 Unmarshal 與未初始化的指標一起使用時,我們會遇到 InvalidUnmarshalError:
// InvalidUnmarshalError描述了傳遞給 Unmarshal 的無效參數。
// (Unmarshal 的參數必須是非零指標。)
此錯誤與文件的建議衝突自動記憶體分配。
要解決此差異,解決使用引用和指標之間的細微差別至關重要。在程式碼運行的第一個範例中,使用 &animals 建立了對變數的引用,確保它始終為零。此引用行為與預期功能一致。
相較之下,第二個範例使用未初始化的指標 (*animals),這在 Unmarshal 眼中代表無效參數。它產生的錯誤準確地反映了這個問題。
最後一點,根據官方文檔,該字的正確拼寫是「unmarshaling」。
以上是為什麼使用未初始化的指標時`json.Unmarshal`會拋出`InvalidUnmarshalError`?的詳細內容。更多資訊請關注PHP中文網其他相關文章!