小白想问一下关于sort的用法的问题

Programmer1613 · · 735 次点击
polaris
社区,需要你我一同完善!
示例: ```go package main import ( "fmt" "sort" ) type User struct { Name string Age int } func main() { Sort() } func Sort() { users := []*User{ {"polaris", 23}, {"studygolang", 29}, {"polaris", 21}, {"studygolang", 27}, {"polaris", 24}, {"studygolang", 25}, } sort.Slice(users, func(i, j int) bool { if users[i].Name == users[j].Name { return users[i].Age < users[j].Age } return users[i].Name < users[j].Name }) for _, user := range users { fmt.Println(*user) } } ``` https://goplay.space/#LrwMQ45tOA
#2
更多评论
1.在函数f之外可以通过 实现 sort.Interface的三个方法来使 A 具备排序功能,重点重写其 Less 方法。 2.在函数f内部要实现的话,就需要手动写很多代码,对 a 这个slice进行各种操作了,主要思路是通过变换将 每个元素的x,y体现到 slice的index上,然后对slice按照index排序就行了 第一种方案,代码清晰优雅,建议使用。
#1
用<a href="/user/polaris" title="@polaris">@polaris</a> 的方式就可以解决你的问题了。 如果你有大量集合数据需要排序、过滤、映射等操作,可以看看我写的这个库(刚开始写,还有好多问题,仅供参考) https://github.com/tk103331/stream 可以像这样操作 `stream.Of(12,94,61,98,13,37,15).Sort(func(n1,n2 int)(return n1&lt;n2)).Collect()` 得到的结果就是排序好的数据
#3