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.

Reply via email to