Solution Review: Implement Miner Interface

This lesson discusses the solution to the challenge given in the previous lesson.

package min
type Miner interface {
	Len() int
	ElemIx(ix int) interface{}
	Less(i, j int) bool
}

func Min(data Miner) interface{}  {
	min := data.ElemIx(0)
	min_idx := 0
	for i:=1; i < data.Len(); i++ {
		if data.Less(i, min_idx) {
				min = data.ElemIx(i)
				min_idx = i
		}
	}
	return min
}

type IntArray []int
func (p IntArray) Len() int           		  { return len(p) }
func (p IntArray) ElemIx(ix int) interface{}  { return p[ix] }
func (p IntArray) Less(i, j int) bool 		  { return p[i] < p[j] }

type StringArray []string
func (p StringArray) Len() int              	 { return len(p) }
func (p StringArray) ElemIx(ix int) interface{}  { return p[ix] }
func (p StringArray) Less(i, j int) bool    	 { return p[i] < p[j] }

Get hands-on with 1400+ tech skills courses.