golang 借助于内置sort.slice包实现排序 - Go语言中文社区

golang 借助于内置sort.slice包实现排序


使用sort.Slice()方法实现数组的排序

使用内置的sort.slice接口实现数组的排序是我目前所知的比较简单的一种排序方式,可以很快的实现数组的排序,个人比较推崇。我所知道的另外一种基于sort包的排序,需要首先写一个结构体实现sort包下通用的接口,相比之下较为麻烦(个人不太推崇),但是如果对细节有要求的话,可以使用该方式实现数组的排序

操作系统和开发环境

操作系统:windows10
go:1.10
ide: goland

sort.Slice()介绍

// Slice sorts the provided slice given the provided less function.
//
// The sort is not guaranteed to be stable. For a stable sort, use
// SliceStable.
//
// The function panics if the provided interface is not a slice.
func Slice(slice interface{}, less func(i, j int) bool) 

slice接口可以按照你所提供的less方法,对数组进行排序,如果提供的第一个参数不是一个数组(切片),函数将会panic

小注:官方库也提供了slicestable这种针对数组切片更稳定的排序方法,有兴趣的可以详细了解一下

实现(直接上代码了)

只需要将数组作为第一个参数传入,并且在第二个函数参数中定义好排序的规则之后,就可以比较快的实现排序了

ps:是不是很快

package main

import (
	"fmt"
	"sort"
)

type SortSliceTest struct {
	Num  int
	Name string
}

func main() {
	arrs := InitArrs()
	sort.Slice(arrs, func(i, j int) bool {
		return arrs[i].Num > arrs[j].Num
	})

	for k, v := range arrs {
		fmt.Println("index", k, "value", v)
	}
}

func InitArrs() (arrs []SortSliceTest) {
	arr1 := SortSliceTest{
		Num:  3,
		Name: "arr1",
	}

	arr2 := SortSliceTest{
		Num:  1,
		Name: "arr2",
	}

	arr3 := SortSliceTest{
		Num:  5,
		Name: "arr3",
	}

	arr4 := SortSliceTest{
		Num:  2,
		Name: "arr4",
	}

	arrs = append(arrs, arr1, arr2, arr3, arr4)
	return
}

运行结果截图

运行结果截图

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/weixin_37078439/article/details/89202527
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢