Files
lo/docs/data/core-maxbyerr.md
T
2026-03-02 16:06:51 +01:00

1.2 KiB

name, slug, sourceRef, category, subCategory, variantHelpers, similarHelpers, position, signatures
name slug sourceRef category subCategory variantHelpers similarHelpers position signatures
MaxByErr maxbyerr find.go#L528 core find
core#find#maxbyerr
core#find#maxby
core#find#max
core#find#maxindex
core#find#maxindexby
core#find#min
core#find#minby
core#find#minindex
core#find#minindexby
221
func MaxByErr[T any](collection []T, comparison func(a T, b T) (bool, error)) (T, error)

Searches the maximum value of a collection using the given comparison function. Returns zero value and nil error when empty.

If the comparison function returns an error, iteration stops and the error is returned.

type Point struct{ X int }
max, err := lo.MaxByErr([]Point{{1}, {5}, {3}}, func(a, b Point) (bool, error) {
    return a.X > b.X, nil
})
// {5}, <nil>

Example with error:

type Point struct{ X int }
max, err := lo.MaxByErr([]Point{{1}, {5}, {3}}, func(a, b Point) (bool, error) {
    if a.X == 5 {
        return false, fmt.Errorf("cannot compare with 5")
    }
    return a.X > b.X, nil
})
// {1}, error("cannot compare with 5")

Note: the comparison function is inconsistent with most languages, since we use the opposite of the usual convention.

See https://github.com/samber/lo/issues/129