码迷,mamicode.com
首页 > 编程语言 > 详细

GO语言为结构体排序

时间:2017-06-07 18:40:41      阅读:232      评论:0      收藏:0      [点我收藏+]

标签:pop   read   nil   error   err   art   return   pac   struct   

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语言为结构体排序

标签:pop   read   nil   error   err   art   return   pac   struct   

原文地址:http://www.cnblogs.com/brucemengbm/p/6958294.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!