gf库使用说明

项目简介

  • gf库 是一个容纳一些比较常用的函数的库,主要用于简化 Go 编程。
  • 项目地址:tiancheng92/gf

注意:部分方法仅可在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) 获取总时长