Golang对结构体字段排序的案例
本案例通过 sort 方法,对产品的 price 字段进行排序,仅供参考...
package main
import (
"fmt"
"sort"
)
type Product struct {
Name string
Price float64
Date string
}
type DataSlice struct {
Data []Product
By func(q, p *Product) bool
}
// 重写 Len() 方法
func (d DataSlice) Len() int {
return len(d.Data)
}
// 重写 Swap() 方法
func (d DataSlice) Swap(i, j int) {
d.Data[i], d.Data[j] = d.Data[j], d.Data[i]
}
// 重写 Less() 方法
func (d DataSlice) Less(i, j int) bool {
return d.By(&d.Data[i], &d.Data[j])
}
func main() {
pro := []Product{
{"苹果", 5.5, "20210203"},
{"香蕉", 2.5, "20210302"},
{"橙子", 7.2, "20210503"},
}
fmt.Println("未排序:", pro)
sort.Sort(DataSlice{pro, func(q, p *Product) bool {
return q.Price < p.Price //可通过修改 Name、Date 字段进行相应的字段进行排序
}})
fmt.Println("已排序:", pro)
}