29 lines
467 B
Go
29 lines
467 B
Go
package gods
|
|
|
|
type Getter[V any] interface {
|
|
Get(int) V
|
|
}
|
|
|
|
type Swapper interface {
|
|
Swap(i, j int)
|
|
Len() int
|
|
}
|
|
|
|
type CustomSorter[V any] interface {
|
|
Getter[V]
|
|
Swapper
|
|
}
|
|
|
|
type LessFunc[V any] func(v1, v2 V) bool
|
|
// The type implements way to sort
|
|
// swappers via custom function.
|
|
type CustomSort[V any] struct {
|
|
CustomSorter[V]
|
|
LessFunc LessFunc[V]
|
|
}
|
|
|
|
func (cs CustomSort[V]) Less(i, j int) bool {
|
|
vi, vj := cs.Get(i), cs.Get(j)
|
|
return cs.LessFunc(vi, vj)
|
|
}
|
|
|