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相关推荐

  1. 12天学好C语言——记录我的C语言学习之路(Day 12)

    12天学好C语言--记录我的C语言学习之路 Day 12: 进入最后一天的学习,用这样一个程序来综合考量指针和字符串的关系,写完这个程序,你对字符串和指针的理解应该就不错了. //输入一个字符串,内有 ...

  2. Go语言学习之路(二)

    Go语言学习之路(二) 面对对象编程思想 抽象 封装 继承 接口 文件 命令行参数 Json 序列化 反序列化(unmarshal) 单元测试 Redis Redis简介 Redis基本使用 Go连接 ...

  3. C语言-学习之路-01

    C语言学习之路-01 目录 关键字 数据类型 常量 变量 声明和定义 进制 sizeof关键字 整型:int short.int.long.long long 字符型:char ASCII对照表 转义 ...

  4. ZYNQ学习之路17.自定义SDSoC硬件平台

    前言 在前面的学习中,我们已经学会了使用Vivado及SDK开发环境,熟悉了硬件开发与Linux软件驱动之间的联系及开发流程.本系列教程我们学习SDSoc的开发,在SDSoc IDE中,Xilinx为 ...

  5. C语言学习之路--计算机系统组成以及工作原理,进制之间的转换和机器数及其表示范围

    目录 一.前言 二.计算机系统组成以及工作原理简介 1.硬件系统基本组成原理及工作原理 2.硬件各部分详解 1.运算器 2.控制器 CPU 3.存储器 1.内存储器 2.外存储器 3.拓展 4.存储器 ...

  6. Go语言学习之路——Go语言简介

    本文首发于我的博客 很多人将GO语言称为21世纪的C语言,因为GO不仅拥有C的简洁和性能,而且还很好的提供了21世纪互联网环境下服务端开发的各种实用特性,让开发者在语言级别就可以方便的得到自己想要的东 ...

  7. C语言学习之路--函数,从知识到实战

    目录 一.前言 二.函数是什么? 三.C语言中函数的分类 1.库函数 1.为什么会有库函数? 2.如何学习库函数? 3.学习库函数举例 1.strcpy 2.memset 3.库函数学习工具总结 2. ...

  8. 2017c语言自学贴吧,【图片】17年1.9开启我的C语言学习之路—小白篇【c语言吧】_百度贴吧...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 什么是程序呐? 我们说这个程序与你的生活有关,通常是达到某个目标或解决某个问题中所需要的步骤或过程,这一系列的步骤就是程序. 生活中的程序与计算机中的程序 ...

  9. c语言编一个dll 用message box 弹出一个对话框,Qt学习之路(17): Qt标准对话框之QMessageBox...

    2015-06-25 16:41 下面的是vc6中创建的dll程序|@||@|// TestDll2QT.cpp : Defines the initialization routines for t ...

最新文章

  1. C#正则提取HTML中img的url值
  2. http://snmp.adventnet.com/help/snmpapi/snmpv3/table_handling/snmptables_rowdata.html
  3. python批量转换图片格式_python批量将图片转换为JPEG格式
  4. chrome 代理插件_Chrome浏览器拓展插件同步助手
  5. 【分布式ID】理解Snowflake算法的实现原理
  6. SQL 引擎如何把语句转换为一个抽象语法树?
  7. [AST实战]从零开始写一个wepy转VUE的工具
  8. 谷歌大脑科学家 Caffe缔造者 贾扬清 微信讲座
  9. git优点缺点(简单介绍)
  10. 快速掌握用python写并行程序设计_Python中的并行编程速度
  11. Linux教学的误区
  12. Python-查看python版本-常用代码-VS编译器版本号
  13. ipv6的127位掩码如何表示_详解IP地址、子网掩码、网络号、主机号、网络地址、主机地址...
  14. 最小的操作系统MenuetOS
  15. 基于java+springboot+mybatis+vue+elementui的农机机械设备租赁平台
  16. UnityWebPlayer屏蔽右键及全屏
  17. react hooks_使用Spring Cloud Gateway保护React式微服务
  18. java导出pdf格式文档
  19. 江苏省计算机二级c语言考试范围,江苏省计算机二级C语言考试大纲.doc
  20. 预测性维护是物联网的终极解决方案吗?ZETA预测性维护方案保持机器设备高效率运行

热门文章

  1. 【bzoj4974】字符串大师 逆模拟KMP
  2. Maven项目环境搭建实例.
  3. python中如何判断一个变量的数据类型?(原创)
  4. 学习SharePoint你需要什么?
  5. 解除工作压力的四大疗法
  6. 【编程语言】正则表达式快速上手
  7. 产品经理基本功:消息推送设计
  8. 前端每日实战:123# 视频演示如何用纯 CSS 创作一架双冀飞机
  9. jvm初体验:堆溢出处理
  10. Cocos2d-x学习之 整体框架描述