ポイント型の多次元ポイントのリストがあります。
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 を複数回実装する必要がありますか? たとえば、データのテーブルを列ごとに並べ替えるとどうなりますか?