项目简介
注意:部分方法仅可在Go版本大于等于1.18时使用!
使用方法
go get -u github.com/tiancheng92/gf
gf库方法详解
字符串相关
函数签名 |
描述 |
func StringJoin(variables …string) string |
字符串拼接(使用strings.Builder以提升性能) |
func StringToBytes(s string) []byte |
字符串转[]byte |
func BytesToString(b []byte) string |
[]byte转字符串 |
func StringCreateGzip(str string) ([]byte, error) |
对字符串进行gzip压缩 |
func StringParseGzip(data []byte) (string, error) |
对gzip压缩后的字符串进行解压 |
浮点数相关
注意:以下方法均使用泛型实现,可以用于任意底层类型为float64或float32的类型
函数签名 |
描述 |
|
func FloatRound[F ~float64 |
~float32](floatValue F, decimalCount int) F |
保留浮点数指定位数的小数 |
切片相关
注意:以下方法均使用泛型实现,可以用于任意类型的数组。
函数签名 |
描述 |
func ArrayDeduplicate[T comparable](array []T) []T |
数组去重 |
func ArrayEqual[T any](array1, array2 []T) bool |
数组比较 |
func ArrayContains[T any](array []T, val T) bool |
查询数组是否包含指定元素 |
func ArrayIntersect[T comparable](array1, array2 []T) []T |
两个数组取交集 |
func ArrayUnion[T comparable](array1, array2 []T) []T |
两个数组取并集 |
func ArrayDifference[T comparable](array1, array2 []T) []T |
两个数组取差集 |
func ArrayFilter[T any](array []T, predicate func(T) bool) []T |
使用函数对数组进行过滤(过滤函数签名为:func(any) bool) |
func ArrayReverse[T any](array []T) []T |
数组反转 |
func ArrayBubbleSort[T any](array []T, less func(array []T, i, j int) bool) |
数组进行冒泡排序(仅需实现less方法) |
func ArrayInsertionSort[T any](array []T, less func(array []T, i, j int) bool) |
数组进行插入排序(仅需实现less方法) |
func ArrayHeapSort[T any](array []T, less func(array []T, i, j int) bool) |
数组进行堆排序(仅需实现less方法) |
func ArrayQuickSort[T any](array []T, less func(array []T, i, j int) bool) |
数组进行快速排序(仅需实现less方法) |
func ArraySort[T any](array []T, less func(array []T, i, j int) bool) |
数组进行go原生排序(仅需实现less方法) |
func ArraySplit[T any](array []T, step int) [][]T |
把一维数组按步长切分为二维数组 |
URL相关
函数签名 |
描述 |
func UrlFormat(urlStr string) (string, error) |
将url格式化(会进行URL合规性检测、冗余字符删除、query参数排序) |
Percentile百分位数相关
函数名 |
描述 |
func Percentile[T any](percentile int, slice []T, less func(slice []T, i, j int) bool, get func(slice []T, i int) float64, avg func(slice []T, i, j int) float64) (float64, error) |
获取百分位数(less用于排序、get用于获取指定索引的值、avg用于求指定两个索引值的平均值) |
Period Time 周期时间相关
函数名 |
描述 |
func NewPeriodTime() PTSlice |
创建周期时间对象 |
func (pt *PTSlice) Append(StartTime, EndTime time.Time) |
添加时间段 |
func (pt PTSlice) Union() PTSlice |
多个时间段取并集 |
func (pt PTSlice) Intersect() PTSlice |
多个时间段取交集 |
func (pt PTSlice) Duration() (sum int64) |
获取总时长 |