
本文详解如何使用 go 的 sort.slice 函数对父级结构体切片按字段排序,并递归对其嵌套子切片(如 children)按内部字段二次排序,实现清晰、高效、可读性强的多级排序逻辑。
本文详解如何使用 go 的 sort.slice 函数对父级结构体切片按字段排序,并递归对其嵌套子切片(如 children)按内部字段二次排序,实现清晰、高效、可读性强的多级排序逻辑。
在 Go 语言中,对包含嵌套结构的切片进行多级排序(例如先按父结构体字段排序,再对每个父结构体内的子切片按其字段排序)是常见需求。sort.Slice 是 Go 1.8 引入的核心工具,它允许我们通过自定义比较函数对任意切片进行原地排序,无需实现 sort.Interface,大幅简化代码。
以下是一个典型场景:给定 []Parent 切片,其中 Parent 包含私有字段 id string 和 children []Child,而 Child 同样包含私有字段 id string。目标是:
-
一级排序:按
Parent.id升序排列整个parents切片; -
二级排序:对每个
Parent.children子切片,按Child.id升序排列。
✅ 正确实现如下:
for _, parent := range parents










