为了账号安全,请及时绑定邮箱和手机立即绑定

复制一片指针(指向新值)

复制一片指针(指向新值)

Go
汪汪一只猫 2023-06-12 15:40:32
我想制作一个包含指针的切片副本,以便新切片中的指针指向新值:假设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 和应用要求。



查看完整回答
反对 回复 2023-06-12
  • 1 回答
  • 0 关注
  • 74 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信