使用嵌套切片对结构体切片进行排序
在 Go 中,您可以使用内置的排序包对自定义结构体切片进行排序。考虑以下代码,它定义了两个结构体 Parent 和 Child,表示父子关系:
<code class="go">type Parent struct { id string children []Child } type Child struct { id string }</code>
假设您有一个 Parent 结构体切片,并希望根据两个条件对它们进行排序:
排序标准:
解决方案:
提供的代码片段满足排序要求:
``
// 按 Id 对parents切片中的每个Parent进行排序
sort.Slice(parents, func(i, j int) bool {
return parents[i].id < parents[j].id })
//对于每个Parent,对每个Child进行排序Children slice by Id
for _,parent := rangeparents {
sort.Slice(parent.children, func(i, j int) bool { return parent.children[i].id < parent.children[j].id })
}
``
sort.Slice函数直接对切片进行操作,无需对于中间容器。
结果与预期输出一致:
[{1 [{7} {8} {9}]} {2 [{4} {5} {6}]} {3 [{1} {2} {3}]}]
以上是如何根据多个条件对 Go 中具有嵌套切片的结构切片进行排序?的详细内容。更多信息请关注PHP中文网其他相关文章!