前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Golang语言为结构体排序

Golang语言为结构体排序

作者头像
李海彬
发布2018-03-27 11:41:27
1.5K0
发布2018-03-27 11:41:27
举报
文章被收录于专栏:Golang语言社区Golang语言社区
有很多的初学者可能对简单的数据的排序可以解决,一旦遇到复制结构的时候可能就束手无策了,今天给大家简单讲解下Go语言中结构体的排序。代码如下,代码是网上给大家找的一个例子,下面代码简单明了;后面大家如果遇到问题例如再上篇文章给大家讲过的并发安全的map的例子,可以增加个排序。

注:下面的代码仅仅是思路,实际项目中切忌map是类型不安全的,如果在高并发下,程序多数会直接挂掉。

代码语言:javascript
复制
package main



import (

        "fmt"

        "io/ioutil"

        "sort"

        "time"

)



type info struct {

        Name string

        Time time.Time

}

type newlist []*info



func main() {

        l, e := getFilelist("./")

        if e != nil {

                fmt.Println(e)

        }
 //调用标准库的sort.Sort必须要先实现Len(),Less(),Swap() 三个方法.

        sort.Sort(newlist(l))  

        for _, v := range l {

                fmt.Println("文件名:", v.Name, "修改时间:", v.Time.Unix())

        }

}



func getFilelist(path string) ([]*info, error) {

        l, err := ioutil.ReadDir(path)

        if err != nil {

                return []*info{}, err

        }

        var list []*info

        for _, v := range l {

                list = append(list, &info{v.Name(), v.ModTime()})

        }

        return list, nil

}



func (I newlist) Len() int {

        return len(I)

}

func (I newlist) Less(i, j int) bool {

        return I[i].Time.Unix() < I[j].Time.Unix()

}

func (I newlist) Swap(i, j int) {

        I[i], I[j] = I[j], I[i]

}
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-07-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Golang语言社区 微信公众号,前往查看

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

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

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