我有一个 Points 类型的多维点列表。
我已经实现了sort.Sort
接口,现在可以按y value
.
例如
type Points []*Point
func (points Points) Len() int {
return len(points)
}
func (points Points) Less(i, j int) bool {
return points[i].y < points[j].y
}
func (points Points) Swap(i, j int) {
points[i], points[j] = points[j], points[i]
}
type Point struct {
x int
y int
country_id int
}
现在我想按x value
而不是对我的观点进行排序y value
。
我的想法是使用带有全局标志的 if 语句(可以在排序之前打开或关闭):
func (points Points) Less(i, j int) bool {
if SORT_BY_X {
return points[i].x < points[j].x
}
return points[i].y < points[j].y
}
有没有更好的方法来做到这一点?我应该多次实施 Less 吗?例如,如果我按列对数据表进行排序怎么办?