首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Go程序例子(47):自定义排序

Go程序例子(47):自定义排序

原创
作者头像
用户11078756
发布2024-12-19 10:20:49
发布2024-12-19 10:20:49
2170
举报
文章被收录于专栏:go程序例子go程序例子

有时候我们希望按照除了自然顺序以外的方式对集合进行排序。例如,假设我们想按字符串的长度而不是按字母顺序进行排序。以下是 Go 中自定义排序的一个例子。

代码语言:go
复制
package main

import (
    "cmp"
    "fmt"
    "slices"
)

func main() {
    fruits := []string{"peach", "banana", "kiwi"}
	// 我们实现了一个用于字符串长度的比较函数。cmp.Compare 对此非常有帮助。
    lenCmp := func(a, b string) int {
        return cmp.Compare(len(a), len(b))
    }
	// 现在我们可以使用这个自定义比较函数调用 slices.SortFunc 来根据名称长度对水果进行排序。
    slices.SortFunc(fruits, lenCmp)
    fmt.Println(fruits)
	// 我们可以使用相同的技巧对一组非内建类型的值进行排序。
    type Person struct {
        name string
        age  int
    }

    people := []Person{
        Person{name: "Jax", age: 37},
        Person{name: "TJ", age: 25},
        Person{name: "Alex", age: 72},
    }
	// 使用 slices.SortFunc 按年龄对人员进行排序。
    slices.SortFunc(people,
        func(a, b Person) int {
            return cmp.Compare(a.age, b.age)
        })
    fmt.Println(people)
}

运行结果:

代码语言:javascript
复制
➜ go run sorting-by-functions.go                        
[kiwi peach banana]
[{TJ 25} {Jax 37} {Alex 72}]

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档