// Chapter 28 example: sorting a slice of structs with a named function. // Run with: go run exercises/28/04-sort.go package main import ( "fmt" "slices" "strings" ) type critter struct { name string energy int } func byEnergy(a critter, b critter) int { return a.energy - b.energy } func byName(a critter, b critter) int { return strings.Compare(a.name, b.name) } func main() { critters := []critter{ {name: "Spark", energy: 3}, {name: "Bolt", energy: 2}, {name: "Nova", energy: 1}, } slices.SortFunc(critters, byEnergy) fmt.Println(critters) // [{Nova 1} {Bolt 2} {Spark 3}] slices.SortFunc(critters, byName) fmt.Println(critters) // [{Bolt 2} {Nova 1} {Spark 3}] }