Golang语言社区--结构体数据排序
时间:2022-05-03
本文章向大家介绍Golang语言社区--结构体数据排序,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
大家好,我是Golang社区主编彬哥,这篇是给大家讲解关于复杂数据结构排序的。
结构体,数据排序
package main
import (
"fmt"
"sort"
"strconv"
)
var testmap map[string]Person
type Person struct {
Name string
Age int
Sex string
}
type ByAge []Person
func (a ByAge) Len() int { return len(a) }
func (a ByAge) Swap(i, j int) { a[i], a[j] = a[j], a[i] }
//func (a ByAge) Less(i, j int) bool { return a[i].Age < a[j].Age }
func (a ByAge) Less(i, j int) bool { return a[i].Age > a[j].Age } // 从大到小排序
func init() {
testmap = make(map[string]Person)
var testmap1 Person
testmap1.Name = "John"
testmap1.Age = 31
testmap1.Sex = "1"
testmap["3"] = testmap1
testmap1.Name = "Bob1"
testmap1.Age = 31
testmap1.Sex = "1"
testmap["0"] = testmap1
testmap1.Name = "Bob"
testmap1.Age = 31
testmap1.Sex = "1"
testmap["2"] = testmap1
testmap1.Name = "John1"
testmap1.Age = 31
testmap1.Sex = "1"
testmap["4"] = testmap1
testmap1.Name = "John2"
testmap1.Age = 31
testmap1.Sex = "1"
testmap["5"] = testmap1
testmap1.Name = "John3"
testmap1.Age = 31
testmap1.Sex = "1"
testmap["6"] = testmap1
}
func main() {
fmt.Println(len(testmap))
people := make([]Person, len(testmap))
// 1 结构提取值获取数据 append
for key, second := range testmap {
ikey, _ := strconv.Atoi(key)
fmt.Println(people) // 从0开始的
people = append(people, people[ikey])
people[ikey] = second
}
// 排序
sort.Sort(ByAge(people))
fmt.Println(people)
// 获取数据值
for key, second := range people {
fmt.Println(key) // 从0开始的
fmt.Println(second.Name)
// 组合排名
}
}
输出结果:
- SQL练习之求解填字游戏
- 快速入门系列--WCF--08扩展与新特性
- SQL练习之两个列值的交换
- Parcel,零配置开发 React 应用!
- 像 React Native 开发 APP 一样,用wn-cli 开发 weapp (微信小程序)
- 正则表达式快速入门
- JavaScript之<script>标签简介
- 数控机床数控系统选择4大关键要素
- Python快速入门
- Jquer学习之jQuery(function(){})与(function(){})(jQuery)之间的区别
- 服务端常见性能隐患分享
- ExtJs学习笔记(19)_复杂Form示例
- Linux快速入门01-基础概念
- SQL学习之Insert的特殊用法(插入检索出的数据,表之间的数据复制)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 微服务[学成在线] day01:CMS接口开发
- 微服务[学成在线] day02:CMS前端开发
- ggplot2| 绘制KEGG气泡图
- 微服务[学成在线] day03:CMS页面管理开发
- ggplot2|绘制GO富集柱形图
- 使用Prometheus监控Flink
- 微服务[学成在线] day04:页面静态化
- Spring Boot 整合Mybatis代码生成插件
- Spring Boot 配置文件
- Hello Spring Boot
- Spring Boot 整合Druid
- Spring Boot 整合JDBC
- Spring Boot 整合SpringSecurity
- jacoco-maven-plugin:prepare-agent
- 【LeetCode】两数之和