http://www.dotcoo.com/golang-sort
今天看见群里再讨论排序的sort.Interface的实现,有童鞋一直搞不定,我就上手了一下,哦耶搞定了,代码放在这里.
其实很简单sort.Interface借口有三个方法,给自己的struct实现这三个方法,然后用将自己的结构体传给sort.Sort方法就排序完成.
当然sort包也有几个常用的方法sort.Float64Slice sort.IntSlise sort.StringSlise,呵呵
package main import ( "fmt" "sort" ) type MapSorter []Item type Item struct { Key string Val int64 } func NewMapSorter(m map[string]int64) MapSorter { ms := make(MapSorter, 0, len(m)) for k, v := range m { ms = append(ms, Item{k, v}) } return ms } func (ms MapSorter) Len() int { return len(ms) } func (ms MapSorter) Less(i, j int) bool { return ms[i].Val < ms[j].Val // 按值排序 //return ms[i].Key < ms[j].Key // 按键排序 } func (ms MapSorter) Swap(i, j int) { ms[i], ms[j] = ms[j], ms[i] } func main(){ m := map[string]int64 { "e": 10, "a": 2, "d": 15, "c": 8, "f": 1, "b": 12, } ms := NewMapSorter(m) sort.Sort(ms) for _, item := range ms { fmt.Printf("%s:%d\n", item.Key, item.Val) } }
相关推荐
在Golang中,排序操作是通过`sort`包来实现的。`sort`包提供了一系列的函数和接口,使得我们能够方便地对不同类型的切片进行排序。在本示例中,我们将关注如何使用`sort.Interface`接口自定义排序规则。 `sort....
为了能够支持多列排序,我们需要定义一个自定义类型的切片`IntArray`并实现`sort.Interface`接口中的三个方法:`Len`、`Swap`和`Less`。 - `Len()`返回数组的长度; - `Swap(i, j int)`用于交换索引为i和j的两个...
而在Go语言中,通过定义特定类型的接口实现排序操作变得更加简单和直观。 #### 基本类型排序 对于Golang中的基本类型(如int、float64和string),`sort`包提供了预定义的排序函数,可以直接对这些类型的数据进行...
在Golang中,插入排序可以有两种实现方式: 1. 新建切片: 在这种方式下,我们创建一个新的切片`newArr`,然后遍历原切片`arr`,将每个元素按顺序插入到`newArr`中。由于每次插入都需要移动元素,所以时间复杂度为...
实现sort接口即可用sort.Sort()方法对对象进行排序,而多重排序呢,我想传入不同排序规则,然后让该对象依次执行不同规则 // 排序规则 type lessFunc func(p1, p2 *CurriculumElem) bool // MultiSorter 多重排序...
2. `sort`包:提供排序算法,包括快速排序、归并排序等,可以对整型、浮点型、字符串甚至自定义类型进行排序。 四、错误处理 Go语言中,错误处理通常通过返回错误值实现。`errors`包提供了简单的错误创建和检查...
只要自定义类型实现了这个接口,就可以使用`sort.Sort()`函数进行排序。 例如,如果我们有一个自定义类型`Person`,表示一个人,包含姓名和年龄两个字段: ```go type Person struct { Name string Age int } ``...
`sort`包提供了`Sort`函数,可以对实现了`sort.Interface`接口的任何类型进行排序。这个接口包括三个方法:`Len`返回切片的长度,`Less`比较两个元素的顺序,`Swap`交换两个元素的位置。对于自定义类型,用户需要...
总的来说,Go语言中实现链表的关键在于理解和使用指针,以及利用空接口实现泛型的效果。通过以上步骤,我们可以构建一个基本的链表数据结构,用于存储和操作任意类型的数据。这对于理解和掌握Go语言的基础语法和特性...
- `sort`: 提供各种排序算法,如快速排序、插入排序等。 7. **错误处理** - `errors`: 提供基本的错误处理机制,包括创建和检查错误。 8. **文本处理** - `unicode`: 处理Unicode字符和字符串。 - `text/...
在`Golang-Assignment-Interfaces`中,可能会展示如何利用接口实现不同类型的排序。 最后,接口还用于实现接口之间的嵌套,这可以帮助我们构建更复杂的抽象。例如,可以定义一个`Writer`接口,表示可以写入数据的...
此外,Go语言提供了丰富的标准库,如`sort`包用于各种排序算法,`container/heap`包支持堆数据结构,`math`包包含数学函数等,这些都可以帮助我们在实现算法时减少重复工作,提高代码质量。 在压缩包文件"**c2go-...
`Go-go-testdeep`是一个强大的Golang库,它极大地扩展了标准库`testing`的功能,提供了更为灵活且全面的深度比较方法。这个库是为了解决在编写单元测试时,对于复杂数据结构(如嵌套的structs、arrays、maps等)进行...
假设我们要对读取的数据进行排序,可以先将数据转换为结构体,然后使用Golang的`sort`包对结构体切片进行排序。例如,如果我们有`TradeData`结构体: ```go type TradeData struct { Date string Value float64...