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

原文地址: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. }
复制代码

相关文章

程序目录结构 简单实现,用户登录后返回一个jwt的token,下次请求带上token请求用户信息接口并返回信息...
本篇博客的主要内容是用go写一个简单的Proof-of-Work共识机制,不涉及到网络通信环节,只是一个本地的简...
简介 默克尔树(MerkleTree)是一种典型的二叉树结构,其主要特点为: 最下面的叶节点包含存储数据或其...
接下来学习并发编程, 并发编程是go语言最有特色的地方, go对并发编程是原生支持. goroutine是go中最近本...
先普及一下, 什么是广度优先搜索 广度优先搜索类似于树的层次遍历。从图中的某一顶点出发,遍历每一个顶...
第一天: 接口的定义和实现 第二天: 一. go语言是面向接口编程. 在学习继承的时候说过, go语言只有封装,...