func SortMaps(lessFunc interface{}) cmp.Option {
	vf := reflect.ValueOf(lessFunc)
	if !function.IsType(vf.Type(), function.Less) || vf.IsNil() {
		panic(fmt.Sprintf("invalid less function: %T", lessFunc))
	}
	ms := mapSorter{vf.Type().In(0), vf}
	return cmp.FilterValues(ms.filter, cmp.Transformer("cmpopts.SortMaps", ms.sort))
}
func SortMaps(lessFunc interface{}) cmp.Option {
	vf := reflect.ValueOf(lessFunc)
	if !function.IsType(vf.Type(), function.Less) || vf.IsNil() {
		panic(fmt.Sprintf("invalid less function: %T", lessFunc))
	}
	ms := mapSorter{vf.Type().In(0), vf}
	return cmp.FilterValues(ms.filter, cmp.Transformer("cmpopts.SortMaps", ms.sort))
}
func SortMaps ( lessFunc interface { } ) cmp . Option { vf := reflect . ValueOf ( lessFunc ) if ! function . IsType ( vf . Type ( ) , function . Less ) || vf . IsNil ( ) { panic ( fmt . Sprintf ( " " , lessFunc ) ) } ms := mapSorter { vf . Type ( ) . In ( 0 ) , vf } return cmp . FilterValues ( ms . filter , cmp . Transformer ( " " , ms . sort ) ) }
// SortMaps returns a Transformer option that flattens map[K]V types to be a
// sorted []struct{K, V}. The less function must be of the form
// "func(T, T) bool" which is used to sort any map with key K that is
// assignable to T.
//
// Flattening the map into a slice has the property that cmp.Equal is able to
// use Comparers on K or the K.Equal method if it exists.
//
// The less function must be:
//	• Deterministic: less(x, y) == less(x, y)
//	• Irreflexive: !less(x, x)
//	• Transitive: if !less(x, y) and !less(y, z), then !less(x, z)
//	• Total: if x != y, then either less(x, y) or less(y, x)
//
// SortMaps can be used in conjunction with EquateEmpty.
SortMaps returns a Transformer option that flattens map [ K ] V types to be a sorted [] struct { K V } . The less function must be of the form func ( T T ) bool which is used to sort any map with key K that is assignable to T . Flattening the map into a slice has the property that cmp . Equal is able to use Comparers on K or the K . Equal method if it exists . The less function must be : • Deterministic : less ( x y ) == less ( x y ) • Irreflexive : !less ( x x ) • Transitive : if !less ( x y ) and !less ( y z ) then !less ( x z ) • Total : if x ! = y then either less ( x y ) or less ( y x ) SortMaps can be used in conjunction with EquateEmpty .