要从ssdb取Zset的数据,golang取出来是map的,本来排好序了,又要排,只能这样子咯:

  1. package main
  2. import (
  3. "fmt"
  4. "sort"
  5. )
  6. //对任意对象进行排序
  7. type Person struct {
  8. name string
  9. age int
  10. }
  11. //为*Person添加String()方法,便于输出
  12. func (p *Person) String() string {
  13. return fmt.Sprintf("( %s,%d )", p.name, p.age)
  14. }
  15. type PersonList []*Person
  16. //排序规则:首先按年龄排序(由小到大),年龄相同时按姓名进行排序(按字符串的自然顺序)
  17. func (list PersonList) Len() int {
  18. return len(list)
  19. }
  20. func (list PersonList) Less(i, j int) bool {
  21. if list[i].age > list[j].age {
  22. return true
  23. } else if list[i].age < list[j].age {
  24. return false
  25. } else {
  26. return list[i].name > list[j].name
  27. }
  28. }
  29. func (list PersonList) Swap(i, j int) {
  30. var temp *Person = list[i]
  31. list[i] = list[j]
  32. list[j] = temp
  33. }
  34. func interfaceTest0203() {
  35. m := make(map[string]int)
  36. m["a"] = 1
  37. m["b"] = 10
  38. m["col"] = 2
  39. m["dd"] = 1
  40. list := make([]*Person,len(m))
  41. i := 0
  42. for k, v := range m {
  43. p := &Person{k, v}
  44. list[i] = p
  45. i++
  46. }
  47. pList := PersonList(list)
  48. sort.Sort(pList)
  49. fmt.Println(pList)
  50. }
  51. func main() {
  52. interfaceTest0203()
  53. }

分类: web

标签:   golang