加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

Golang语言社区--结构体数据排序

发布时间:2020-12-16 18:04:29 所属栏目:大数据 来源:网络整理
导读:原文地址:http://www.golang.ltd/forum.php?mod=viewthreadtid=2816extra=page%3D1 作者:彬哥 结构体,数据排序 package main import ( "fmt" "sort" "strconv" ) var testmap map[string]Person type Person struct { Name string Ageint Sexstring } typ

原文地址:http://www.golang.ltd/forum.php?mod=viewthread&tid=2816&extra=page%3D1

作者:彬哥


结构体,数据排序

  1. package main

  2. import (
  3. "fmt"
  4. "sort"
  5. "strconv"
  6. )
  7. var testmap map[string]Person
  8. type Person struct {
  9. Name string
  10. Ageint
  11. Sexstring
  12. }
  13. type ByAge []Person
  14. func (a ByAge) Len() int { return len(a) }
  15. func (a ByAge) Swap(i,j int) { a[i],a[j] = a[j],a[i] }

  16. func (a ByAge) Less(i,j int) bool { return a[i].Age > a[j].Age } // 从大到小排序
  17. func init() {
  18. testmap = make(map[string]Person)
  19. var testmap1 Person
  20. testmap1.Name = "John"
  21. testmap1.Age = 31
  22. testmap1.Sex = "1"
  23. testmap["3"] = testmap1
  24. testmap1.Name = "Bob1"
  25. testmap["0"] = testmap1
  26. testmap1.Name = "Bob"
  27. testmap["2"] = testmap1
  28. testmap1.Name = "John1"
  29. testmap["4"] = testmap1
  30. testmap1.Name = "John2"
  31. testmap["5"] = testmap1
  32. testmap1.Name = "John3"
  33. testmap["6"] = testmap1
  34. }
  35. func main() {
  36. fmt.Println(len(testmap))
  37. people := make([]Person,len(testmap))
  38. // 1 结构提取值获取数据 append
  39. for key,second := range testmap {
  40. ikey,_ := strconv.Atoi(key)
  41. fmt.Println(people) // 从0开始的
  42. people = append(people,people[ikey])
  43. people[ikey] = second
  44. }
  45. // 排序
  46. sort.Sort(ByAge(people))
  47. fmt.Println(people)
  48. // 获取数据值
  49. fmt.Println(key) // 从0开始的
  50. fmt.Println(second.Name)

  51. }
复制代码

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读