// min_interface.go 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) for i := 1; i < data.Len(); i++ { if data.Less(i, i-1) { min = data.ElemIx(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] }