Go 通过结构体指定字段进行排序

Go 通过结构体指定字段进行排序,第1张

概述对结构体指定字段进行排序:对结构体指定字段进行排序:packagemainimport("fmt""sort")//对结构体指定字段进行排序typeUserstruct{Namestring`json:"name"`//`json:"xxx"`:在结构体和json字符串字段顺序不一致的情况下:unmarshal根据tag去寻
对结构体指定字段进行排序:  对结构体指定字段进行排序: package main import (    "fmt"    "sort") // 对结构体指定字段进行排序type User struct {    name string `Json:"name"` // `Json:"xxx"`:在结构体和Json字符串字段顺序不一致的情况下:unmarshal根据tag去寻找对应字段的内容    Age  int    `Json:"age"`} // type Users []User// func SortByAge(u Users) {func SortByAge(u []User) {    fmt.Printf("源数据:%+v\n", u)     sort.Slice(u, func(i, j int) bool { // desc        return u[i].Age > u[j].Age    })    fmt.Printf("按Age降序:%+v\n", u)     sort.Slice(u, func(i, j int) bool { // asc        return u[i].Age < u[j].Age    })    fmt.Printf("按Age升序:%+v\n", u)} func main() {    // 初始化结构体对象数组:    // 初始化方法1:    // users := Users{    //     {    //         name: "test1",    //         Age:  22,    //     },    //     {    //         name: "test2",    //         Age:  19,    //     },    //     {    //         name: "test3",    //         Age:  25,    //     },    // }     // 初始化方法2:    var users []User    var u User    u.name = "test1"    u.Age = 22    users = append(users, u)    u.name = "test2"    u.Age = 20    users = append(users, u)    u.name = "test3"    u.Age = 26    users = append(users, u)     SortByAge(users)} // 输出:源数据:[{name:test1 Age:22} {name:test2 Age:20} {name:test3 Age:26}]按Age降序:[{name:test3 Age:26} {name:test1 Age:22} {name:test2 Age:20}]按Age升序:[{name:test2 Age:20} {name:test1 Age:22} {name:test3 Age:26}] 此外也可使用sort.sort()方法,不过需要自己去实现 Len()、Swap()、Less()方法,参考:golang对自定义类型排序另外,通过借助“结构体指定字段进行排序”解了一道LeetCode 347题:传送门

 

总结

以上是内存溢出为你收集整理的Go 通过结构体指定字段进行排序全部内容,希望文章能够帮你解决Go 通过结构体指定字段进行排序所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1211765.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-04
下一篇 2022-06-04

发表评论

登录后才能评论

评论列表(0条)

保存