我有一部分结构。我试图将此切片复制到新变量,因为我的原始切片发生了很大变化 图纸模型
type Timesheet struct {
ID *int64 `json:"id"`
TimestampStart *time.Time `json:"timestampStart"`
TimestampEnd *time.Time `json:"timestampEnd"`
}
SheetArrayCopy := make([]models.Sheet, len(sheetList))
copy(SheetArrayCopy, SheetList)
//several steps which goes through SheetList and changes the value of sheetList
但是,当我更改sheetList,
中的值时,SheetArrayCopy
的值也会更改。
答案 0 :(得分:0)
来自您的问题和@Masklinn示例链接。我可以看到您通过使用* pointer(指针指向的地址)来设置值,这意味着将该地址的值设置为新值。
与
无关复制
这正是它的意思所在。在这种情况下,它将克隆字段指针的值,该指针指向字段值的地址。
问题在于您使用和设置指针值的方式。
有3种方法可以避免您提到的问题。
您可以参考我的代码,这是我的答案的演示。
https://play.golang.org/p/-pIgEDEr-hI
有关指针的链接,直接指出如何使用指针。 https://tour.golang.org/moretypes/1
答案 1 :(得分:-1)
也许您可以将其隐藏回json,并将其解组到新的目的地。