Dong.Ge

左手代码 右手江湖

golang 对结构体排序

东哥's Avatar 2019-05-28

  1. 觉得有技术含量的是,是这一句
    1. 排序完成之后,再把数据类型转换回去.

对结构体按照ctime倒序排列,时间大在前面.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
package main

import (
"fmt"
"sort"
)

type FcmMessage struct {
Id int64
Ctime int64
}
type mySort []FcmMessage

func (a mySort) Less(i, j int) bool {
if int(a[i].Ctime) > int(a[j].Ctime) {
return true
} else if int(a[i].Ctime) < int(a[j].Ctime) {
return false
}
return false
}

func (a mySort) Swap(i, j int) {
a[i], a[j] = a[j], a[i]
}
func (a mySort) Len() int {
return len(a)
}
func main() {
var wcd = []FcmMessage{
FcmMessage{
Id: 22,
Ctime: 222,
},
FcmMessage{
Id: 1,
Ctime: 111,
},
FcmMessage{
Id: 22,
Ctime: 9999,
},
FcmMessage{
Id: 3,
Ctime: 333,
},
FcmMessage{
Id: 3,
Ctime: 444,
},
}
fmt.Println(wcd)
wcdOk := mySort(wcd)
sort.Sort(wcdOk)
wcd = ([]FcmMessage)(wcdOk)
fmt.Println(wcd)
}

觉得有技术含量的是,是这一句

1
wcd = ([]FcmMessage)(wcdOk)

排序完成之后,再把数据类型转换回去.

本文最后更新于 天前,文中所描述的信息可能已发生改变