文档章节

golang 排序 1.8 新特性

z
 zdglf
发布于 2017/02/17 09:08
字数 293
阅读 471
收藏 1

1.8以前是使用

//数组对象实现该接口
type Interface interface {
	// Len is the number of elements in the collection.
	Len() int
	// Less reports whether the element with
	// index i should sort before the element with index j.
	Less(i, j int) bool
	// Swap swaps the elements with indexes i and j.
	Swap(i, j int)
}
//然后使用
sort.Sort(interface)

//例如

type StringList []string

func (sl StringList )Len() int{
	return len(sl)
}


func (sl StringList )Less(i, j int) bool{
	return sl[i]<sl[j];
}

func (sl StringList )Swap(i, j int){
	var temp string = sl[i]
	sl[i] = sl[j]
	sl[j] = temp
}

b := StringList{"4","6","5"}
sort.Sort(b)
fmt.Println(b)

1.8新增sort.Slice函数就方便好多了

sort.Slice(s,func(i,j int)bool {return s [i] .Name <s [j] .Name})


a := []string{"1","3","2"}
sort.Slice(a, func(i,j int) bool { return a[i]>a[j]});

完整例子

type StringList []string

func (sl StringList )Len() int{
	return len(sl)
}


func (sl StringList )Less(i, j int) bool{
	return sl[i]<sl[j];
}

func (sl StringList )Swap(i, j int){
	var temp string = sl[i]
	sl[i] = sl[j]
	sl[j] = temp
}



func main() {
	TestSort()
}

func TestSort(){
	a := []string{"1","3","2"}
	sort.Slice(a, func(i,j int) bool { return a[i]>a[j]});
	fmt.Println(a)

	b := StringList{"4","6","5"}
	sort.Sort(b)
	fmt.Println(b)
}

© 著作权归作者所有

上一篇: golang https
下一篇: Android BaseAdapter
z
粉丝 7
博文 194
码字总数 31640
作品 0
广州
私信 提问
WebConsole 1.4.2 发布,SSH 远程终端

更新说明: 修改部分BUG 更新 term.js 更新 Golang 到 1.8 版本 修证 Golang 1.8 版本中 url.Parse 解析地址 BUG 替换 term.js 为 xterm.js,增加xterm的特性 更新对CJK(中文、日文、韩文)字...

Eriloan
2017/02/27
886
0
年终盘点!2017年超有价值的Golang文章

年终盘点!2017年超有价值的Golang文章 鸟窝2017-12-281 阅读 Go 马上就要进入2018年了,作为年终的盘点,本文列出了一些2017年的关于Go编程的一些文章,并加上简短的介绍。 文章排名部分先后...

鸟窝
2017/12/28
0
0
WebConsole 1.4.2 发布,SSH 远程终端

WebConsole 1.4.2 发布了。,这是一个基于Golang、WebSocket、TermJS的SSH远程终端。 更新日志: 修改部分BUG 更新 term.js 更新 Golang 到 1.8 版本 修证 Golang 1.8 版本中 url.Parse 解析...

Eriloan
2017/02/27
2.4K
1
梁大帅/mqant

mqant mqant是一款基于Golang语言的简洁,高效,高性能的分布式游戏服务器框架,研发的初衷是要实现一款能支持高并发,高性能,高实时性,的游戏服务器框架,也希望mqant未来能够做即时通讯和物联网...

梁大帅
2017/07/03
0
0
Go 1.8 is released

Go 1.8 is released The Go Programming Language Blog2017-02-1610 阅读 golang Today the Go team is happy to announce the release of Go 1.8. You can get it from the download page .......

The Go Programming Language Blog
2017/02/16
0
0

没有更多内容

加载失败,请刷新页面

加载更多

程序设计基础(C)第06讲例程

1summing.c /* summing.c -- 根据用户键入的整数求和 */#include <stdio.h>int main(void){ long num; long sum = 0L; /* 把sum 初始化为0 */ int status; p......

树人大学数字媒体吴凡
5分钟前
3
0
聊聊nacos config的publishConfig

序 本文主要研究一下nacos config的publishConfig ConfigController nacos-1.1.3/config/src/main/java/com/alibaba/nacos/config/server/controller/ConfigController.java @Controller@R......

go4it
32分钟前
3
0
Eureka应用注册与集群数据同步源码解析

在之前的EurekaClient自动装配及启动流程解析一文中我们提到过,在构造DiscoveryClient类时,会把自身注册到服务端,本文就来分析一下这个注册流程 客户端发起注册 boolean register() t...

Java学习录
42分钟前
11
0
Java描述设计模式(15):责任链模式

本文源码:GitHub·点这里 || GitEE·点这里 一、生活场景描述 1、请假审批流程 公司常见的请假审批流程:请假天数 当 day<=3 天,项目经理审批当 3<day<=5 天,部门经理审批当 day>5 天...

知了一笑
53分钟前
10
0
总结:数组与链表

1、内存申请:数组在内存上是连续的空间;链表,内存地址上可以是不连续的。 2、查询速度:数组可以随机访问,链表必须顺序访问,即从首个元素开始遍历,逐个查找,所以数组查询很快。 3、写入...

浮躁的码农
今天
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部