GO语言学习之路17
2022/02/08今天是复工第一天,晚上困得很,九点睡了以后晚上一点醒来写个接口编程的经典案例。
---> 实现对Hero结构体切片的排序sort.Sort(data Interface)
package mainimport ("fmt""math/rand""sort"
)//1.定义一个Hero结构体,有name和age字段
type Hero struct {Name stringAge int
}//2.定义一个Hero结构体切片类型
type HeroSlice []Hero//7.实现Sort(data Interface)接口
/*
type Interface interface {// Len方法返回集合中的元素个数Len() int// Less方法报告索引i的元素是否比索引j的元素小Less(i, j int) bool// Swap方法交换索引i和j的两个元素Swap(i, j int)
}
*/
func (hero HeroSlice) Len() int {return len(hero)
}func (hero HeroSlice) Less(i, j int) bool {return hero[i].Age > hero[j].Age
}func (hero HeroSlice) Swap(i, j int) {
/*temp := hero[i]hero[i] = hero[j]hero[j] = temp
*/hero[i], hero[j] = hero[j], hero[i]//golang的交换,上面的交换代码等价于这一句
}func main() {//3.定义一个Hero结构体切片var heroes HeroSlice//4.给Hero结构体切片赋值for i := 0; i < 5; i++ {//5.定义Hero结构体,然后append到HeroSlice切片中heroName := fmt.Sprintf("hero%d", rand.Intn(100))heroStru := Hero{heroName, rand.Intn(100)}heroes = append(heroes, heroStru)}//6.打印排序前Hero结构体切片 为方便查看就遍历打印//fmt.Println("排序前Hero结构体切片", heroes)for _, v := range heroes {fmt.Println(v)}fmt.Println("==================排序后")//8.使用方法func Sort(data Interface)对Hero结构体切片进行排序sort.Sort(heroes)//fmt.Println("排序后Hero结构体切片", heroes)for _, v := range heroes {fmt.Println(v)}
}
从这个案例开始体会到接口的妙用
GO语言学习之路17相关推荐
- 12天学好C语言——记录我的C语言学习之路(Day 12)
12天学好C语言--记录我的C语言学习之路 Day 12: 进入最后一天的学习,用这样一个程序来综合考量指针和字符串的关系,写完这个程序,你对字符串和指针的理解应该就不错了. //输入一个字符串,内有 ...
- Go语言学习之路(二)
Go语言学习之路(二) 面对对象编程思想 抽象 封装 继承 接口 文件 命令行参数 Json 序列化 反序列化(unmarshal) 单元测试 Redis Redis简介 Redis基本使用 Go连接 ...
- C语言-学习之路-01
C语言学习之路-01 目录 关键字 数据类型 常量 变量 声明和定义 进制 sizeof关键字 整型:int short.int.long.long long 字符型:char ASCII对照表 转义 ...
- ZYNQ学习之路17.自定义SDSoC硬件平台
前言 在前面的学习中,我们已经学会了使用Vivado及SDK开发环境,熟悉了硬件开发与Linux软件驱动之间的联系及开发流程.本系列教程我们学习SDSoc的开发,在SDSoc IDE中,Xilinx为 ...
- C语言学习之路--计算机系统组成以及工作原理,进制之间的转换和机器数及其表示范围
目录 一.前言 二.计算机系统组成以及工作原理简介 1.硬件系统基本组成原理及工作原理 2.硬件各部分详解 1.运算器 2.控制器 CPU 3.存储器 1.内存储器 2.外存储器 3.拓展 4.存储器 ...
- Go语言学习之路——Go语言简介
本文首发于我的博客 很多人将GO语言称为21世纪的C语言,因为GO不仅拥有C的简洁和性能,而且还很好的提供了21世纪互联网环境下服务端开发的各种实用特性,让开发者在语言级别就可以方便的得到自己想要的东 ...
- C语言学习之路--函数,从知识到实战
目录 一.前言 二.函数是什么? 三.C语言中函数的分类 1.库函数 1.为什么会有库函数? 2.如何学习库函数? 3.学习库函数举例 1.strcpy 2.memset 3.库函数学习工具总结 2. ...
- 2017c语言自学贴吧,【图片】17年1.9开启我的C语言学习之路—小白篇【c语言吧】_百度贴吧...
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 什么是程序呐? 我们说这个程序与你的生活有关,通常是达到某个目标或解决某个问题中所需要的步骤或过程,这一系列的步骤就是程序. 生活中的程序与计算机中的程序 ...
- c语言编一个dll 用message box 弹出一个对话框,Qt学习之路(17): Qt标准对话框之QMessageBox...
2015-06-25 16:41 下面的是vc6中创建的dll程序|@||@|// TestDll2QT.cpp : Defines the initialization routines for t ...
最新文章
- C#正则提取HTML中img的url值
- http://snmp.adventnet.com/help/snmpapi/snmpv3/table_handling/snmptables_rowdata.html
- python批量转换图片格式_python批量将图片转换为JPEG格式
- chrome 代理插件_Chrome浏览器拓展插件同步助手
- 【分布式ID】理解Snowflake算法的实现原理
- SQL 引擎如何把语句转换为一个抽象语法树?
- [AST实战]从零开始写一个wepy转VUE的工具
- 谷歌大脑科学家 Caffe缔造者 贾扬清 微信讲座
- git优点缺点(简单介绍)
- 快速掌握用python写并行程序设计_Python中的并行编程速度
- Linux教学的误区
- Python-查看python版本-常用代码-VS编译器版本号
- ipv6的127位掩码如何表示_详解IP地址、子网掩码、网络号、主机号、网络地址、主机地址...
- 最小的操作系统MenuetOS
- 基于java+springboot+mybatis+vue+elementui的农机机械设备租赁平台
- UnityWebPlayer屏蔽右键及全屏
- react hooks_使用Spring Cloud Gateway保护React式微服务
- java导出pdf格式文档
- 江苏省计算机二级c语言考试范围,江苏省计算机二级C语言考试大纲.doc
- 预测性维护是物联网的终极解决方案吗?ZETA预测性维护方案保持机器设备高效率运行