package scheduler type nodeMaxHeap struct { nodes []NodeInfo lessFunc func(*NodeInfo, *NodeInfo) bool length int } func (h nodeMaxHeap) Len() int { return h.length } func (h nodeMaxHeap) Swap(i, j int) { h.nodes[i], h.nodes[j] = h.nodes[j], h.nodes[i] } func (h nodeMaxHeap) Less(i, j int) bool { // reversed to make a max-heap return h.lessFunc(&h.nodes[j], &h.nodes[i]) } func (h *nodeMaxHeap) Push(x interface{}) { h.nodes = append(h.nodes, x.(NodeInfo)) h.length++ } func (h *nodeMaxHeap) Pop() interface{} { h.length-- // return value is never used return nil }