登录
首页 >  Golang >  Go问答

未成功删除 List 中的元素

来源:stackoverflow

时间:2024-03-25 13:27:32 261浏览 收藏

在 Go 语言中,向函数或方法传递切片时,其内容将通过指针进行复制。这意味着可以修改切片中的元素,但无法添加或删除元素。因此,如果需要通过引用传递切片,则必须使用指针。在给定的代码示例中,当尝试从切片副本中删除元素时,由于切片是通过指针复制的,因此无法进行删除操作。

问题内容

如果我执行下面的代码,列表中的元素不会被删除。我很确定它是因为不知何故在 create() 内部创建了一个列表的深层副本。如果我将 create 的返回值从 listwrapper 更改为 *listwrapper,则代码可以正常工作。

对我来说仍然不直观为什么它不能与副本一起使用。任何人都可以阐明这一点吗?感谢您的帮助。

type ListWrapper struct {
    Value list.List
}

func Create() ListWrapper {
    var lw ListWrapper
    lw.Value.PushBack(1)
    return lw
}

func main() {
    lw := Create()
    lw.Value.Remove(lw.Value.Back())
}

解决方案


与 C 不同,在 Go 中,切片将通过指针复制到函数/方法中。这意味着您可以更改其项目,但无法从中添加或删除项目。

因此,如果您想通过引用传递它,则必须使用指针。

更多信息:https://www.geeksforgeeks.org/how-to-pass-a-slice-to-function-in-golang/

本篇关于《未成功删除 List 中的元素》的介绍就到此结束啦,但是学无止境,想要了解学习更多关于Golang的相关知识,请关注golang学习网公众号!

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