Files
the-way-to-go_ZH_CN/eBook/exercises/chapter_11/min_interface.go
2018-09-08 07:00:05 -04:00

31 lines
706 B
Go
Executable File

// min_interface.go
package min
type Miner interface {
Len() int
ElemIx(ix int) interface{}
Less(i, j int) bool
}
func Min(data Miner) interface{} {
j := 0
for i := 1; i < data.Len(); i++ {
if data.Less(i, j) {
j = i
}
}
return data.ElemIx(j)
}
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] }