擷取指向介面值的指標
嘗試取得指向儲存在介面中的值的指標可能會引發異常,如下所示程式碼如下:
這會導致錯誤,指出無法取得el.Value.(retry) 的位址。這種行為不僅限於結構體;它適用於儲存在介面中的任何類型。
瞭解介面值表示
要瞭解此限制,請考慮介面值的內部表示。它由兩個單字組成:
至關重要的是,所包含的值由介面變數擁有。此外,當將新值指派給介面時,可以重複使用該值的儲存。
允許指標檢索的後果
理解這些原則,請考慮以下內容程式碼:
這裡,用於整數的儲存已被重新用於保存指向結構的指標。因此,取消引用 *p 現在會產生指向 SomeStruct 的指標的整數表示形式。此行為有可能破壞類型系統。
替代解決方案
要避免此問題,請考慮在列表中儲存指向結構的指標而不是結構本身。或者,您可以傳遞 *list.Element 值作為所包含結構的參考。
以上是為什麼檢索介面值的指標會引發異常?的詳細內容。更多資訊請關注PHP中文網其他相關文章!