Go Slice Sorting
Jump to navigation
Jump to search
Internal
Overview
The slices
package comes with slice sorting functionality.
Sorting Based on a Comparison Function
slices.SortFunc(slice []SomeType, func(a, b SomeType) int)
takes the typed slice and a function that expects two type instances, a and b in order, and that should return a negative value if a < b, zero if a == b and a positive value if a > b.
import (
"slices"
"time"
)
type SomeType struct {
created time.Time
color string
}
...
t0 := time.Now()
// listed in the rough inverse order of creation time
s := []SomeType{
{
created: t0.Add(10 * time.Second),
color: "red",
},
{
created: t0.Add(5 * time.Second),
color: "gray",
},
{
created: t0,
color: "white",
},
{
created: t0.Add(5 * time.Second),
color: "gray 2",
},
}
slices.SortFunc(s, func(a, b SomeType) int {
return int(a.created.Sub(b.created))
})
// the ordered slice is "white", "gray", "gray 2", "red"