code: func (h *heapData) Push(kv interface{}) {
  	keyValue := kv.(*itemKeyValue)
  	n := len(h.queue)
  	h.items[keyValue.key] = &heapItem{keyValue.obj, n}
  	h.queue = append(h.queue, keyValue.key)
  }
docs: // Push is supposed to be called by heap.Push only.