堆Pop方法两种实现方式的区别

1. 问题描述?#

在实现 golang 的 container/heap 的实现,下面两种方法有啥区别,哪种方法更好呢?为什么?
方法一:

func (h *IntHeap) Pop() interface{} {
    old := *h
    n := len(old)
    x := old[n-1]
    *h = old[0 : n-1]
    return x
}

方法二:

func (h *IntHeap) Pop() interface{} {
   ca1 := len(*h) - 1
  x := (*h)[ca1]
   *h = (*h)[0:ca1]
   return x
}
Mosquito