克隆具有未導出字段的結構
在Go 中,結構體中未導出的字段無法在聲明包之外訪問或修改。這在嘗試克隆此類類型的物件時提出了挑戰。
問題陳述
考慮以下類型定義:
type T struct { S string is []int }
如果我們將T 類型的一個對象分配給另一個對象,對未分配給另一個對象,對未分配給導出字段T.is 所做的更改將影響這兩個物件。這是因為簡單賦值僅建立淺表副本,且 T.is 引用保持共用。
限制
由於 T.is 的未導出性質,不能使用反射直接存取或複製它。因此,不可能用 T.is.
可能的解決方案
注意:
重要的是要記住並不總是需要克隆具有未導出字段的結構。如果未匯出的欄位不是必需的或需要在聲明包之外進行修改,請考慮將它們匯出或提供適當的 API 來存取和修改它們。
以上是如何有效複製未匯出欄位的 Go 結構體?的詳細內容。更多資訊請關注PHP中文網其他相關文章!