golang去除链表指定节点中的变量问题


* Definition for singly-linked list.
 * type ListNode struct {
 *     Val int
 *     Next *ListNode
 * }
 */
func deleteNode(head *ListNode, val int) *ListNode {
    if head.Val == val{
        return head.Next
    }

    pre:=head   
    for head.Next.Val != val{
        head = head.Next
    }
    head.Next = head.Next.Next
    return pre
}

这是一个golang写的去除某项节点的代码,我不明白为什么pre保存的是初始的head,后面也没有对pre的操作,为什么最后要返回pre,本人初学,请赐教。

移动head跟移动pre没太大区别,哪个不动返回哪个。头依然还是那个头