实现功能说明
列出当前目录的所有文件的修改时间,和文件名称。
定义的结构体
type info struct {
Time time.Time
Name string
}
完整的代码
完整的程序,部分说明在注释部分。
package main
import (
"fmt"
"io/ioutil"
"sort"
"time"
)
type info struct {
Time time.Time
Name string
}
//后面调用标准库的sort.Sort必须要先实现Len(),Less(),Swap() 三个方法.
type newlist []*info
func (L newlist) Len() int {
return len(L)
}
func (L newlist) Less(i, j int) bool {
//这里写大于或着小于需要根据实际的升降来决定,不是函数名
return L[i].Time.Unix() < L[j].Time.Unix()
}
func (L newlist) Swap(i, j int) {
L[i], L[j] = L[j], L[i]
}
func main() {
filesList, e := ioutil.ReadDir("./")
if e != nil {
fmt.Println(e)
}
var sortList []*info
for _, v := range filesList {
sortList = append(sortList, &info{v.Name(), v.ModTime()})
}
//newlist(sortList) 将一个只有数据的类型[]*info,强制类型转化为了带有满足sort.Sort方法的类型
sort.Sort(newlist(sortList))
for _, v := range sortList {
fmt.Println("modify-time:", v.Time.Format("2006-01-02T 15:04:05")," filename:", v.Name,)
}
}