我想制作一个包含指针的切片副本,以便新切片中的指针指向新值:假设s是原始切片,c是副本。那么改变*c[i]应该不会影响*s[i]。最短的方法是什么?
1 回答
幕布斯6054654
TA贡献1876条经验 获得超7个赞
使用以下代码复制值:
c := make([]*T, len(s))
for i, p := range s {
if p == nil {
// Skip to next for nil source pointer
continue
}
// Create shallow copy of source element
v := *p
// Assign address of copy to destination.
c[i] = &v
}
此代码创建值的浅表副本。根据应用程序要求,您可能想要深度复制值,或者如果是结构类型,则复制一个或多个字段。具体取决于实际类型 T 和应用要求。
- 1 回答
- 0 关注
- 99 浏览
添加回答
举报
0/150
提交
取消