首页 > 解决方案 > 未从 list.List 中删除元素

问题描述

如果我执行下面的代码,列表中的元素不会被删除。我很确定这是因为不知何故在 Create() 中创建了列表的深层副本。如果我将Createfrom的返回更改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())
}

标签: golinked-list

解决方案


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

所以如果你想通过引用传递它,你可以使用指针。

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


推荐阅读