v0.0.552 mathext.ClampOpt
All checks were successful
Build Docker and Deploy / Run goext test-suite (push) Successful in 2m50s

This commit is contained in:
2025-01-05 03:40:15 +01:00
parent f7b4aa48d7
commit d009aafd4e
5 changed files with 38 additions and 16 deletions

View File

@@ -1,5 +1,7 @@
package mathext
import "gogs.mikescher.com/BlackForestBytes/goext/langext"
func ClampInt(v int, lo int, hi int) int {
if v < lo {
return lo
@@ -39,3 +41,25 @@ func ClampFloat64(v float64, lo float64, hi float64) float64 {
return v
}
}
func Clamp[T langext.NumberConstraint](v T, min T, max T) T {
if v < min {
return min
} else if v > max {
return max
} else {
return v
}
}
func ClampOpt[T langext.NumberConstraint](v *T, fallback T, min T, max T) T {
if v == nil {
return fallback
} else if *v < min {
return min
} else if *v > max {
return max
} else {
return *v
}
}