Documentation for "container/heap" says Package heap provides heap operations for any type that implements heap.Interface.
heap.Interface is type Interface interface { sort.Interface Push(x interface{}) // add x as element Len() Pop() interface{} // remove and return element Len() - 1. } The example program provided in the documentation has these methods // An IntHeap is a min-heap of ints. type IntHeap []int func (h IntHeap) Len() int { return len(h) } func (h IntHeap) Less(i, j int) bool { return h[i] < h[j] } func (h IntHeap) Swap(i, j int) { h[i], h[j] = h[j], h[i] } func (h *IntHeap) Push(x interface{}) { // Push and Pop use pointer receivers because they modify the slice's length, // not just its contents. *h = append(*h, x.(int)) } func (h *IntHeap) Pop() interface{} { old := *h n := len(old) x := old[n-1] *h = old[0 : n-1] return x } heap.Push() and Pop() are implemented by *IntHeap and the sort.Interface is implemented by IntHeap. In other words heap.Interface is not implemented by one single type. Doesn't this violate the requirement "Package heap provides heap operations for any type that implements heap.Interface." ? Appreciate any help to understand this better. -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/golang-nuts/cb6fb486-1660-4e27-ac69-cb826da4bb03%40googlegroups.com.