天天看點

go語言結構體對象按照時間對象排序

擷取使用者清單,按照申請時間倒序排序,注:調用标準庫的sort.Sort必須要先實作Len(),Less(),Swap() 三個方法.

......

import (

"fmt"

"io/ioutil"

"sort"

"time"

)

type User struct {

ApplicantGuid string `json:"applicant_guid"`

ApplyTime string `json:"apply_time"`

UsedLicense int `json:"used_license"`

Applicant string `json:"applicant"`

}

type newUserList []User

func (I newUserList) Len() int {

return len(I)

}

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

return stringConvertTime(I[i].ApplyTime) > stringConvertTime(I[j].ApplyTime)

}

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

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

}

例如對user_list進行排序:

TestData["license_detail"] = `{

"user_list":[

{

"applicant_guid":"guid",

"apply_time":"2018-03-06 20:44:51",

"used_license":"10",

"applicant":"tim1"

},

{

"applicant_guid":"guid11",

"apply_time":"2018-03-07 20:44:33",

"used_license":"10",

"applicant":"tim2"

},

{

"applicant_guid":"guid_tin",

"apply_time":"2018-03-05 20:44:33",

"used_license":"10",

"applicant":"tim3"

}

]

}`

var users []User

周遊user_list擷取到users

sort.Sort(newUserList(users))進行排序可以得到正确排序