加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

golang 自定义类型的排序

发布时间:2020-12-16 09:39:30 所属栏目:大数据 来源:网络整理
导读:sort包中提供了很多排序算法,对自定义类型进行排序时,只需要实现sort的Interface即可,包括: func Len() int {… } func Swap(i,j int) {… } func Less(i,j int) bool {… } 举例如下: package main import ( "fmt" "sort" ) type Person struct { Name

sort包中提供了很多排序算法,对自定义类型进行排序时,只需要实现sort的Interface即可,包括:

func Len() int {… }
func Swap(i,j int) {… }
func Less(i,j int) bool {… }

举例如下:

package main


import (
    "fmt"
    "sort"
)

type Person struct {
    Name string
    Age  int
}

func (p Person) String() string {
    return fmt.Sprintf("%s: %d",p.Name,p.Age)
}

// ByAge implements sort.Interface for []Person based on
// the Age field.
type ByAge []Person

func (a ByAge) Len() int           { return len(a) }
func (a ByAge) Swap(i,j int)      { a[i],a[j] = a[j],a[i] }
func (a ByAge) Less(i,j int) bool { return a[i].Age < a[j].Age }

func main() {
    people := []Person{
        {"Bob", 31},{"John", 42},{"Michael", 17},{"Jenny", 26},}

    fmt.Println(people)
    sort.Sort(ByAge(people))
    fmt.Println(people)
}

Output:

[Bob: 31 John: 42 Michael: 17 Jenny: 26]
[Michael: 17 Jenny: 26 Bob: 31 John: 42]

参考

  • go文档
  • golang 对自定义类型排序
    http://www.52php.cn/article/p-qhypemnh-d.html

  • Go语言实战_自定义OrderedMap
    https://studygolang.com/articles/7755

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读