透過攔截Unmarshal 呼叫來防止UnmarshalJSON 中的堆疊溢位
在自訂UnmarshalJSON 實作的上下文中,可能需要執行其他步驟在自訂UnmarshalJSON 實現的上下文中,可能需要執行其他步驟在資料結構初始化期間。但是,在 UnmarshalJSON 中呼叫 json.Unmarshal() 可能會導致堆疊溢出,因為 JSON 解碼器會重複搜尋自訂實現,從而導致無限遞歸。
為了避免此問題,可以呼叫底層預設實作而不觸發遞歸循環。操作方法如下:
使用Type 關鍵字建立中間類型:
型別轉換與賦值:
呼叫預設解組函數:
後處理(可選):
透過採用此技術,遞歸循環被破壞,因為新類型沒有定義UnmarshalJSON 方法。這可以防止堆疊溢出並允許透過附加處理進行無縫初始化。
以上是如何防止 Go 的 UnmarshalJSON 中的堆疊溢位?的詳細內容。更多資訊請關注PHP中文網其他相關文章!