原文地址:http://www.golang.ltd/forum.PHP?mod=vIEwthread&tID=2816&extra=page%3D1
作者:彬哥
结构体,数据排序
@H_419_18@ package mainimport (
"fmt"
"sort"
"strconv"
)
var testmap map[string]Person
type Person struct {
name string
Ageint
Sexstring
} type ByAge []Person
func (a ByAge) Len() int { return len(a) }
func (a ByAge) Swap(i,j int) { a[i],a[j] = a[j],a[i] }
func (a ByAge) Less(i,j int) bool { return a[i].Age > a[j].Age } // 从大到小排序
func init() {
testmap = make(map[string]Person)
var testmap1 Person
testmap1.name = "John"
testmap1.Age = 31
testmap1.Sex = "1"
testmap["3"] = testmap1
testmap1.name = "Bob1"
testmap["0"] = testmap1
testmap1.name = "Bob"
testmap["2"] = testmap1
testmap1.name = "John1"
testmap["4"] = testmap1
testmap1.name = "John2"
testmap["5"] = testmap1
testmap1.name = "John3"
testmap["6"] = testmap1
}
func main() {
fmt.Println(len(testmap))
people := make([]Person,len(testmap))
// 1 结构提取值获取数据 append
for key,second := range testmap {
ikey,_ := strconv.Atoi(key)
fmt.Println(people) // 从0开始的
people = append(people,people[ikey])
people[ikey] = second
}
// 排序
sort.sort(ByAge(people))
fmt.Println(people)
// 获取数据值
fmt.Println(key) // 从0开始的
fmt.Println(second.name)
} 复制代码 总结
以上是内存溢出为你收集整理的Golang语言社区--结构体数据排序全部内容,希望文章能够帮你解决Golang语言社区--结构体数据排序所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)