Я хочу удалить Node
из связанного списка в Go, и у меня есть эта структура и эти методы:
type Node struct {
Next *Node
Val int
}
func (n *Node) Append(val int) {
end := &Node{Val: val}
here := n
for here.Next != nil {
here = here.Next
}
here.Next = end
}
func Remove(n *Node, val int) *Node {
head := n
for head.Next != nil {
if head.Next.Val == val {
head.Next = head.Next.Next
return head
}
head = head.Next
}
return head
}
func NewNode(val int) *Node {
return &Node{Val: val}
}
Я хочу удалить элемент, подобный этому:
n := NewNode(1)
n.Append(2)
n.Append(3)
n.Append(4)
n.Append(5)
m := Remove(n, 3)
for m != nil {
fmt.Println(n.Val)
m = m.Next
}
Распечатываются следующие элементы: 3
и 5
, а не 1,
2 ,
4 and
5`.Я повторно реализовал этот код в Python и получил ожидаемый ответ.Что происходит в Go?У меня такое чувство, что это связано с указателями.