初学Golang的N个小技巧
# TimePoint为自定义类型
type TimePoint []string
func (t TimePoint) Len() int { return len(t) }
func (t TimePoint) Swap(i, j int) { t[i], t[j] = t[j], t[i] }
func (t TimePoint) Less(i, j int) bool { return t[i] < t[j] }
func main() {
timePoints := []string{"05:31", "22:08", "00:35"}
sort.Sort(TimePoint(timePoints))
fmt.Println(timePoints) // [00:35 05:31 22:08]
}
# 上方的[]string还是基础类型,那么如何对自定义类型排序,请往下看
## BikeStore为自定义类型,有一个字段amount表示自行车店拥有的自行车数量
type BikeStore struct {
amount int
}
## 下方就是自行车店排序规则
type BikeSort []BikeStore
func (b BikeSort) Len() int {
return len(b)
}
func (b BikeSort) Swap(i, j int) {
b[i], b[j] = b[j], b[i]
}
func (b BikeSort) Less(i, j int) bool {
return b[i].amount < b[j].amount
}
func main() {
s1 := BikeSort{BikeStore{5}, BikeStore{1}, BikeStore{3}}
sort.Sort(s1)
# 结果: [{1} {3} {5}]
}