mirror of
https://github.com/zeromicro/go-zero.git
synced 2025-01-23 09:00:20 +08:00
35 lines
627 B
Go
35 lines
627 B
Go
package mathx
|
|
|
|
type Numerical interface {
|
|
~int | ~int8 | ~int16 | ~int32 | ~int64 |
|
|
~uint | ~uint8 | ~uint16 | ~uint32 | ~uint64 |
|
|
~float32 | ~float64
|
|
}
|
|
|
|
// AtLeast returns the greater of x or lower.
|
|
func AtLeast[T Numerical](x, lower T) T {
|
|
if x < lower {
|
|
return lower
|
|
}
|
|
return x
|
|
}
|
|
|
|
// AtMost returns the smaller of x or upper.
|
|
func AtMost[T Numerical](x, upper T) T {
|
|
if x > upper {
|
|
return upper
|
|
}
|
|
return x
|
|
}
|
|
|
|
// Between returns the value of x clamped to the range [lower, upper].
|
|
func Between[T Numerical](x, lower, upper T) T {
|
|
if x < lower {
|
|
return lower
|
|
}
|
|
if x > upper {
|
|
return upper
|
|
}
|
|
return x
|
|
}
|