SortPlayers stable multi-key comparator with nil scores

Go
package rank

import "sort"

// Player is a ranked record; Score is optional and nil values sort last.
type Player struct {
    Name  string
    Score *int
}

// SortPlayers orders by score descending, then name ascending, stably.
func SortPlayers(players []Player) {
    sort.SliceStable(players, func(i, j int) bool {
        a, b := players[i], players[j]
        switch {
        case a.Score == nil && b.Score == nil:
            return a.Name < b.Name
        case a.Score == nil:
            return false
        case b.Score == nil:
            return true
        case *a.Score != *b.Score:
            return *a.Score > *b.Score
        default:
            return a.Name < b.Name
        }
    })
}