首頁  >  文章  >  後端開發  >  為什麼使用未初始化的指標時`json.Unmarshal`會拋出`InvalidUnmarshalError`?

為什麼使用未初始化的指標時`json.Unmarshal`會拋出`InvalidUnmarshalError`?

Susan Sarandon
Susan Sarandon原創
2024-11-12 09:32:01540瀏覽

Why Does `json.Unmarshal` Throw an `InvalidUnmarshalError` When Using an Uninitialized Pointer?

JSON Unmarshal:指標與引用

最近,使用者註意到在傳遞指標時使用 json.Unmarshal 出現意外行為。讓我們研究一下為什麼會有差異。

在官方文件中,我們遇到了這樣的說法:如果指針最初為nil,Unmarshal 會自動分配一個新值來指向:

Unmarshal 將JSON 解組為指針 指向的值。如果指標為 nil,Unmarshal 會為其指派一個新值來指向。

但是,當嘗試將 Unmarshal 與未初始化的指標一起使用時,我們會遇到 InvalidUnmarshalError:

// InvalidUnmarshalError描述了傳遞給 Unmarshal 的無效參數。

// (Unmarshal 的參數必須是非零指標。)

此錯誤與文件的建議衝突自動記憶體分配。

要解決此差異,解決使用引用和指標之間的細微差別至關重要。在程式碼運行的第一個範例中,使用 &animals 建立了對變數的引用,確保它始終為零。此引用行為與預期功能一致。

相較之下,第二個範例使用未初始化的指標 (*animals),這在 Unmarshal 眼中代表無效參數。它產生的錯誤準確地反映了這個問題。

最後一點,根據官方文檔,該字的正確拼寫是「unmarshaling」。

以上是為什麼使用未初始化的指標時`json.Unmarshal`會拋出`InvalidUnmarshalError`?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn