mirror of
https://github.com/rjNemo/underscore
synced 2026-06-06 10:36:43 +00:00
Adds length checks to Max and Min functions to provide clear, explicit panic messages when called with empty slices, rather than allowing confusing index-out-of-bounds panics. Changes: - Max: Added check for empty slice with "underscore.Max: empty slice" panic - Min: Added check for empty slice with "underscore.Min: empty slice" panic - Updated doc comments to document panic behavior - Added TestMaxEmpty and TestMinEmpty to verify panic behavior Impact: - Better error messages for debugging - Documented behavior prevents user surprises - Non-breaking change (still panics, just with clearer message) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
20 lines
405 B
Go
20 lines
405 B
Go
package underscore
|
|
|
|
import "cmp"
|
|
|
|
// Min returns the minimum value in the slice.
|
|
// Panics if values is empty.
|
|
// This function can currently only compare numbers reliably.
|
|
// This function uses operator <.
|
|
func Min[T cmp.Ordered](values []T) T {
|
|
if len(values) == 0 {
|
|
panic("underscore.Min: empty slice")
|
|
}
|
|
min := values[0]
|
|
for _, v := range values {
|
|
if v < min {
|
|
min = v
|
|
}
|
|
}
|
|
return min
|
|
}
|