go - 元素未从list.List中删除

标签 go linked-list

如果执行以下代码,列表中的元素不会被删除。我很确定它是因为在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中,将使用指针将 slice 复制到函数/方法中。这意味着您可以更改其项目,但不能从中添加或删除项目。
因此,如果要通过引用传递指针,则可以使用指针。
更多信息:https://www.geeksforgeeks.org/how-to-pass-a-slice-to-function-in-golang/

关于go - 元素未从list.List中删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62732395/

相关文章:

algorithm - 如何将 CLI 客户端实现到 golang 守护进程?

go - 为什么 fmt.Fprint 没有在页面上生成 html 输出?

go - 找不到包 "rsc.io/quote"

java - java双向链表插入排序算法

go - 就地截断 slice

go - 对 go 语法感到困惑

c - 在链表中添加冗余节点

C——链表

c++ - 链表追加方法

c# - 我什么时候应该使用 List 与 LinkedList