Go语言笔记-利用sort包实现自定义排序技巧

Go语言笔记—sort包实现组合数据类型、结构体的排序

sort包

sort包提供了排序切片和用户自定义数据集的函数

函数

func Slice(x interface{}, less func(i, j int) bool)

参数x是空接口类型,应当是组合数据类型,如切片。

参数less是布尔函数类型,有两个索引参数i、j,如果i的对应值小于j的返回true。通常使用匿名函数。i和j分别可以理解为self、other。

example:

package main

import (
	"fmt"
	"sort"
)

func main() {
	people := []struct {
		Name string
		Age  int
	}{
		{"Gopher", 7},
		{"Alice", 55},
		{"Vera", 24},
		{"Bob", 75},
	}
	sort.Slice(people, func(i, j int) bool { return people[i].Name < people[j].Name })
	fmt.Println("By name:", people)
	// By name: [{Alice 55} {Bob 75} {Gopher 7} {Vera 24}]


	sort.Slice(people, func(i, j int) bool { return people[i].Age < people[j].Age })
	fmt.Println("By age:", people)
    // By age: [{Gopher 7} {Vera 24} {Alice 55} {Bob 75}]
}
package main

import (
	"fmt"
	"sort"
)

func main() {
	courses := [][]int{{2,3},{5,6},{1,2},{3,5},{4,8},{3,7}}
	fmt.Println(courses)
    // [[2 3] [5 6] [1 2] [3 5] [4 8] [3 7]]
	sort.Slice(courses,func(i,j int) bool {return courses[i][1] < courses[j][1]})
	fmt.Println(courses)
    // [[1 2] [2 3] [3 5] [5 6] [3 7] [4 8]]
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值