在 Go 中,您可能會遇到需要建立介面值的副本以維護不同狀態的情況。當複製保存指標引用的介面值時,考慮其意義至關重要。本文探討如何處理此類場景,並提供了創建真實副本的技術。
在給定的範例中,user1 透過指標引用 Admin 結構體。這表示當您將 user1 指派給 user2 時,您實際上會使 user2 指向相同的底層 Admin 結構。透過 user1 或 user2 進行的任何修改都會影響原始結構。
創建不同副本的一種方法是在user1 中鍵入斷言值,copy底層Admin 結構體,並將其地址包裝在新的User 值中:
對於更通用的解決方案,您可以利用Go 的反射功能來檢索底層類型,動態建立該類型的新值,並將其包裝在新的User 值中:
透過使用反射,可以處理user1 中的值不是指標的情況。
如果介面值需要複製並保持不同,因此仔細考慮底層類型並使用適當的技術(例如明確複製或反射)來創建真正的副本非常重要。這些方法允許您修改一份副本而不影響原始版本。
以上是在處理指標引用時如何在 Go 中建立介面值的真實副本?的詳細內容。更多資訊請關注PHP中文網其他相關文章!