快速排序结构体golang

实现功能说明

列出当前目录的所有文件的修改时间,和文件名称。
定义的结构体

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,)
    }
}

运行效果

快速排序结构体golang_第1张图片

你可能感兴趣的:(go)