[英]Element not being removed from list.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 中,将使用指针将切片复制到函数/方法。 这意味着您可以更改他们的项目,但不能从中添加或删除项目。
所以如果你想通过引用传递它,你可以使用指针。
更多信息: https://www.geeksforgeeks.org/how-to-pass-a-slice-to-function-in-golang/
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.