package main

/*
import (
	"fmt"
	"sort"
)

type Person struct {
	Name     string
	AgeYears int
	SSN      int
}

func main() {
	p := []Person{
		{"Alice", 20, 1234},
		{"Bob", 10, 2345},
		{"Carla", 15, 3456},
	}

	sort.Slice(p, func(i, j int) bool { return p[i].Name < p[j].Name })
	fmt.Printf("sorted by name: %v\n", p)

	sort.Slice(p, func(i, j int) bool { return p[i].AgeYears < p[j].AgeYears })
	fmt.Printf("sorted by age: %v\n", p)

	sort.Slice(p, func(i, j int) bool { return p[i].SSN < p[j].SSN })
	fmt.Printf("sorted by SSN: %v\n", p)
}
*/
