首頁 > 後端開發 > Golang > 在處理指標引用時如何在 Go 中建立介面值的真實副本?

在處理指標引用時如何在 Go 中建立介面值的真實副本?

Patricia Arquette
發布: 2024-12-07 09:40:15
原創
689 人瀏覽過

How to Create True Copies of Interface Values in Go When Dealing with Pointer References?

介面值中的複製與引用

在 Go 中,您可能會遇到需要建立介面值的副本以維護不同狀態的情況。當複製保存指標引用的介面值時,考慮其意義至關重要。本文探討如何處理此類場景,並提供了創建真實副本的技術。

問題:透過指標引用共享值

在給定的範例中,user1 透過指標引用 Admin 結構體。這表示當您將 user1 指派給 user2 時,您實際上會使 user2 指向相同的底層 Admin 結構。透過 user1 或 user2 進行的任何修改都會影響原始結構。

解決方案1:明確複製底層結構

創建不同副本的一種方法是在user1 中鍵入斷言值,copy底層Admin 結構體,並將其地址包裝在新的User 值中:

解2:使用反射

對於更通用的解決方案,您可以利用Go 的反射功能來檢索底層類型,動態建立該類型的新值,並將其包裝在新的User 值中:

透過使用反射,可以處理user1 中的值不是指標的情況。

結論

如果介面值需要複製並保持不同,因此仔細考慮底層類型並使用適當的技術(例如明確複製或反射)來創建真正的副本非常重要。這些方法允許您修改一份副本而不影響原始版本。

以上是在處理指標引用時如何在 Go 中建立介面值的真實副本?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板