37 lines
520 B
Go
37 lines
520 B
Go
package math
|
|
|
|
type signed interface {
|
|
~int | ~int8 | ~int16 | ~int32 | ~int64
|
|
}
|
|
type unsigned interface {
|
|
~uint | ~uint8 | ~uint16 | ~uint32 | ~uint64 | ~uintptr
|
|
}
|
|
type integer interface {
|
|
signed | unsigned
|
|
}
|
|
type float interface {
|
|
~float32 | ~float64
|
|
}
|
|
type ordered interface {
|
|
integer | float | ~string
|
|
}
|
|
|
|
func Abs[T signed](i T) T {
|
|
if i > 0 {
|
|
return i
|
|
}
|
|
return -i
|
|
}
|
|
func Max[T ordered](i, j T) T {
|
|
if i > j {
|
|
return i
|
|
}
|
|
return j
|
|
}
|
|
func Min[T ordered](i, j T) T {
|
|
if i < j {
|
|
return i
|
|
}
|
|
return j
|
|
}
|