I have an array/slice of members:
type Member struct {
Id int
LastName string
FirstName string
}
var members []Member
My quest
Here is a slightly more concise implementation of the accepted answer:
package main
import (
"fmt"
"sort"
)
type Member struct {
FirstName string
LastName string
}
func main() {
members := []Member{
{"John", "Doe"},
{"Jane", "Doe"},
{"Mary", "Contrary"},
}
fmt.Println(members)
sort.Slice(members, func(i, j int) bool {
return members[i].LastName < members[j].LastName || members[i].FirstName < members[j].FirstName
})
fmt.Println(members)
}
Running will print the following output:
[{John Doe} {Jane Doe} {Mary Contrary}]
[{Mary Contrary} {Jane Doe} {John Doe}]
This is as expected: the members are printed in order of ascending last name, where in the case of a tie, they are printed in order of first name.