GO语言为结构体排序

Posted brucemengbm

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了GO语言为结构体排序相关的知识,希望对你有一定的参考价值。

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(newlist(l))  //调用标准库的sort.Sort必需要先实现Len(),Less(),Swap() 三个方法.
	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]
}

以上是关于GO语言为结构体排序的主要内容,如果未能解决你的问题,请参考以下文章

Go语言结构体

Go语言结构体

Go语言结构体

Go语言结构体

讲讲go语言的结构体

GO语言学习(十六)Go 语言结构体