type Person struct {
money int
age int
}
type PersonSlice []Person
//sort interface
//type aa []xx
// Len() int -- 个数
// Swap(i, j int) -- 交换
// Less(i, j int) bool -- 比较
func (p PersonSlice)Len() int {
return len(p)
}
func (p PersonSlice)Swap(i, j int) {
p[i], p[j] = p[j], p[i]
}
// 从小到大排
func (p PersonSlice)Less(i, j int) bool {
// age 优先排 age相同的情况下 money大的排在前边
// 错误写法
//if p[i].age < p[j].age {
// if p[i].money < p[j].money {
// return true
// }
//}
if p[i].age < p[j].age {
return true
}
if p[i].age > p[j].age {
return false
}
return p[i].money < p[j].money
}
func sortTest() {
// struct init
var data PersonSlice
//data = PersonSlice{
// { 1000, 10 },
// { 1000, 10 },
// { 1000, 10 },
// { 1000, 10 },
// { 1000, 10 },
// { 1000, 10 },
//}
data = PersonSlice{
{ money: 1000, age: 10 },
{ money: 1100, age: 11 },
{ money: 1200, age: 11 },
{ money: 1200, age: 12 },
{ money: 1500, age: 7 },
{ money: 1600, age: 8 },
{ money: 1400, age: 9 },
{ money: 1500, age: 20 },
}
sort.Sort(data)
fmt.Println(" data --- ", data)
}
sort的主要用法:
type Person struct { a int b int }
type PersonSlice []Person
- 三个方法 func (p PrsonSlice)Len() -- 个数 func (p PrsonSlice)Less(i, j int) bool -- 比较 func (p PrsonSlice)Swap(i, j int) -- 交换