Thanks, Ian.

On Sunday, April 12, 2020 at 9:10:25 PM UTC-7, Ian Lance Taylor wrote:
>
> On Sun, Apr 12, 2020 at 8:28 PM Ram Kumar <forwar...@gmail.com 
> <javascript:>> wrote: 
> > 
> > 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. 
>
> All methods of intHeap are also methods of *intHeap (see 
> https://golang.org/ref/spec#Method_sets).  So the type *intHeap 
> implements heap.Interface. 
>
> Ian 
>

-- 
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/0604ca4f-73a4-4dbc-8379-219cf51a5a72%40googlegroups.com.

Reply via email to