修改自己的定位,只提供一些helper方法,不做比较专业的优化,搞不了...
泛型的类型约束依赖:
https://github.com/golang-infrastructure/go-gtypes
对数字求绝对值,输入类型和输出类型一致,不需要强制转换类型
func Abs[T gtypes.Number](v T) T
对数字类型的切片数组求平均值,结果以float64类型返回
func Avg[T gtypes.Number](slice []T) float64
对数字类型的切片数组求平均值,结果以指定的类型返回,这个R类型要支持从float64直接强转成功,否则会panic
func AvgR[T, R gtypes.Number](slice []T) R
比较两个数字切片是否相等
func Equals[T1, T2 gtypes.Number](a T1, b T2) bool
比较两个浮点数是否相等:
func FloatEquals[T gtypes.Float](a, b T) bool
把64位的浮点型数据转为uint64数据
func Float64SliceToUint64Slice(float64Slice []float64) []uint64
把64位的无符号数组转为浮点型数组
func Uint64SliceToFloat64Slice(uint64Slice []uint64) []float64
func Float32SliceToUint32Slice(float32Slice []float32) []uint32
func Uint32SliceToFloat32Slice(uint32Slice []uint32) []float32
最大值:
func Max[T gtypes.Number](values ...T) T
最小值:
func Min[T gtypes.Number](values ...T) T
是否等于0:
func IsZero[T gtypes.Number](value T) bool