登录
首页 >  Golang >  Go问答

更新指针切片以包含新值

来源:stackoverflow

时间:2024-02-26 21:39:32 435浏览 收藏

一分耕耘,一分收获!既然都打开这篇《更新指针切片以包含新值》,就坚持看下去,学下去吧!本文主要会给大家讲到等等知识点,如果大家对本文有好的建议或者看到有不足之处,非常欢迎大家积极提出!在后续文章我会继续更新Golang相关的内容,希望对大家都有所帮助!

问题内容

我想复制一个包含指针的切片,以便新切片中的指针指向新值:假设 s 是原始切片,c 是副本。那么更改 *c[i] 应该不会影响 *s[i]

根据这个答案,通常的复制方法不会发生这种情况。

执行此操作的最短方法是什么?


解决方案


使用以下代码复制值:

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
}

Run it in the playground

此代码创建该值的浅表副本。根据应用程序要求,您可能需要深度复制该值,或者如果是结构类型,则需要复制一个或多个字段。具体取决于实际类型t和应用需求。

好了,本文到此结束,带大家了解了《更新指针切片以包含新值》,希望本文对你有所帮助!关注golang学习网公众号,给大家分享更多Golang知识!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>