Avatar ·

在Go中按任意字段对结构体切片进行排序的最简单方法是什么?

大家好!我是Go语言新手,一直搞不清楚如何对结构体切片进行排序。假设我有这样一段代码: ```go type Person struct { Name string Age int } people := []Person{ {"Alice", 30}, {"Bob", 25}, {"Charlie", 35}, } ``` 我想按`Name`字段(按字母顺序)对这个切片进行排序。然后,可能还要按`Age`字段(升序)排序。在其他语言(比如Python)中,我只需传递一个排序键:`sorted(people, key=lambda p: p.name)`。但在Go中,我看到需要编写一个单独的类型,实现`sort.Interface`接口的三个方法——`Len()`、`Less()`、`Swap()`。这太冗长了! 有没有更简短、更优雅的方法?也许有某种内置函数或包,允许我直接指定字段名?还是说我每次排序都得写10行代码?提前感谢帮助! <<>>

简短回答:使用sort.Slice和匿名函数