# README
goutils
Golang 通用类函数工具包
功能概览
数据库相关
- 根据配置信息生成不同数据库的 DSN 字符串
- gorm 常用操作封装(包括但不限于:创建各类 db 实例,根据 viper 配置直接获取各类 db 实例)
- sqlx 常用操作封装(包括但不限于:创建各类 db 实例,根据 viper 配置直接获取各类 db 实例)
Redis 相关
文件相关
单元测试相关
IP 相关
时间相关
slice 相关
- 根据下标删除 string slice 中的元素: RemoveStringSliceItemByIndex
- 判断两个 string slice 是否相同: IsEqualStringSlice
- float64 slice 按指定大小进行切块: ChunkFloat64Slice
- 判断字符串是否在给定的字符串列表中: IsStrInSlice
- 判断 int 是否在给定的 int 列表中: IsIntInSlice
string 相关
配置相关
URL 相关
Struct 相关
- 将结构体指针对象转换为 url.Values: StructToURLValues
- 将结构体指针对象转换为 map[string]interface{}: StructToMap
- 获取结构体指针对象 tag 列表: StructTagList
HTTP 请求相关
- 根据参数创建 json post 请求: NewHTTPJSONReq
- 根据参数创建 form-data post 请求: NewHTTPMultipartReq
- 发送 http post 请求: HTTPPOSTRaw
- 发送 http post 请求并将结果进行 json unmarsal: HTTPPOST
- 创建带 querystring 的 http get 请求 url: NewHTTPGetURLWithQueryString
- 发送 http get 请求: HTTPGETRaw
- 发送 http get 请求并将结果进行 json unmarsal: HTTPGET
时间相关
统计
- 求 float64 列表均值: AvgFloat64
- 求 float64 列表方差: VarianceFloat64
- 求 float64 列表标准差: StdDeviationFloat64
- 求 float64 列表中位数: MidValueFloat64
其他分类
# Functions
AvgFloat64 平均值.
ChunkFloat64Slice float64 slice 按指定大小进行切块.
CloseGormInstances 关闭全部的 Gorm 连接并重置 GormInstances.
CloseRedisInstances 关闭全部的 redis 连接并重置 RedisInstances.
CloseSqlxInstances 关闭全部的 Sqlx 连接并重置 SqlxInstances.
CopyFile 复制文件.
GetGoCache 封装go-cache 的 Get 方法支持直接获取具体类型.
GetLocalIP 获取当前 IP.
GormMySQL 根据 viper 配置中的实例名称返回 gorm 连接 mysql 的实例.
GormPostgres 根据 viper 配置中的实例名称返回 pg 实例.
GormSQLite3 根据 viper 配置中的实例名称返回 sqlite3 实例.
GormSqlserver 根据 viper 配置中的实例名称返回 sqlserver 实例.
HTTPGET 发送 http get 请求并将返回结果 json unmarshal 到 rspPointer.
HTTPGETRaw 发送 http get 请求.
HTTPPOST 发送 http post 请求并将结果 json unmarshal 到 rspPointer.
HTTPPOSTRaw 发送 http post 请求.
InitViper 根据配置文件路径和名称初始化 viper 并监听变化 configPath 配置文件路径 configName 配置文件名(不带格式后缀) configType 配置文件格式后缀 onConfigChangeRun 配置文件发生变化时的回调函数.
IsEqualStringSlice 判断两个 string slice 是否相同.
IsInitedViper 返回 viper 是否已初始化.
IsIntInSlice 判断字符串是否在给定的字符串列表中.
IsStrInSlice 判断字符串是否在给定的字符串列表中.
JaccardSimilarity Jaccard similarity相似性系数 J(A, B) = |A ∩ B | / | A ∪ B | A,B分别代表符合某种条件的集合:两个集合交集的大小/两个集合并集的大小,交集=并集意味着2个集合完全重合。.
LikeFieldEscape 转义 SQL 的 like 模糊查询时字段值为通配符的值.
MidValueFloat64 获取中位数.
NewErrCode 创建错误码,code 可以是任意类型.
NewGormMySQL 返回 gorm mysql 连接实例.
NewGormPostgres 返回 gorm postgresql 连接实例.
NewGormSQLite3 返回 gorm sqlite3 连接实例.
NewGormSqlserver 返回 gorm sqlserver 连接实例.
NewHashids 创建Hashids对象 salt可以使用用户创建记录时的用户唯一身份标识+当前时间戳的字符串作为值 minLength指定转换后的最小长度,随着数字ID的增大长度可能会变长.
NewHTTPGetURLWithQueryString 创建带 querystring 的 http get 请求 url.
NewHTTPJSONReq 根据参数创建 json 请求.
NewHTTPMultipartReq 根据参数创建 form-data 请求.
NewJSONTime 创建 JSONTime 对象.
NewRedisClient 返回 redis 的客户端连接对象.
NewRedisClusterClient 返回 redis cluster 的连接对象.
NewRedisFailoverClient 返回带 sentinel 的 redis 连接对象.
NewSqlxMsSQL 返回 sqlx sqlserver 连接实例.
NewSqlxMySQL 返回 sqlx mysql 连接实例.
NewSqlxPostgres 返回 sqlx postgresql 连接实例.
NewSqlxSQLite3 返回 sqlx sqlite3 连接实例.
PaginateByOffsetLimit 按 offset,limit 计算分页信息.
PaginateByPageNumSize 按 pagenum,pagesize 计算分页信息 参数必须全部大于 0.
RedisClient 根据 viper 配置返回 redis 客户端.
RedisClusterClient 根据 viper 配置返回 redis cluster 实例.
RedisSentinelClient 根据 viper 配置返回 redis 客户端.
RemoveAllWhitespace 删除字符串中所有的空白符.
RemoveDuplicateWhitespace 删除字符串中重复的空白字符为单个空白字符 trim: 是否去掉首位空白.
RemoveStringSliceItemByIndex 根据下标删除 string slice 中的元素.
RequestHTTPHandler 根据参数请求传入的 http.Handler 对应的 path 接口,用于接口测试 返回 ResponseRecorder: https://golang.org/pkg/net/http/httptest/#ResponseRecorder.
RequestHTTPHandlerFunc 根据参数请求传入的 http.HandlerFunc 返回请求处理结果 body ,用于接口测试.
ReversedFloat64Slice 反转 float64 列表,有返回值.
ReverseFloat64Slice 直接反转 float64 列表,无返回值.
ReverseString 翻转字符串.
SetGormInstances 设置 gorm db 对象到 GormInstances 中.
SetRedisInstances 设置 redis 对象到 RedisInstances 中.
SplitStringFields 将传入字符串分割为slice.
SqlxMsSQL 根据 viper 中配置的实例名称返回 sqlserver 实例.
SqlxMySQL 根据 viper 中配置的实例名称返回 sqlx 连接 mysql 的实例.
SqlxPostgres 根据 viper 中配置的实例名称返回 pg 实例.
SqlxSQLite3 根据 viper 中配置的实例名称返回 sqlite3 实例.
StdDeviationFloat64 求标准差.
StrSimilarity 提供不同的算法检测文本相似度.
StrToTime 字符串时间转 time 对象.
StructTagList 获取结构体 tag 列表.
StructToMap 结构体转 Map.
StructToURLValues 将结构体指针对象转换为 url.Values , key 为 json tag , value 为结构体字段值,没有 json tag 则使用字段名称.
UnixTimestampTrim 将 Unix 时间戳(秒)以指定秒数进行规整.
URLKey 根据 url 生成 key ,默认使用 url escape ,长度超过 200 则使用 sha1 结果.
ValidationErrorToText error msg for human.
VarianceFloat64 求方差.
YiWanString 将数字转换为 亿/万.
# Variables
ErrGoCacheKeyNotFound go-cache get key 不存在.
ErrGoCacheSetResultFailed go-cache get 转换为结果对象失败.
GormInstances 以 sync.Map 保存 gorm db 相关信息 key 为小写的数据库驱动名称, value 为实例名为 key , 具体的 db 对象为 value 的 sync.Map 形如: {"mysql": {"localhost": db}, "postgres": {"localhost": db}}.
JSONTimeFormat 定义 JSONTime 的时间格式 该值可以被外部修改为指定的其他格式.
RedisClusterInstances 按 which key 保存 redis cluster 客户端实例.
RedisInstances 按 which key 保存 redis 客户端实例.
RedisSentinelInstances 按 which key 保存 redis sentinel 客户端实例.
SqlxInstances 以 sync.Map 保存 sqlx db 相关信息 key 为小写的数据库驱动名称, value 为实例名为 key , 具体的 db 对象为 value 的 sync.Map 形如: {"mysql": {"localhost": db}, "postgres": {"localhost": db}}.
ValidatorTagName 结构体 validator 的 tag 名.
# Structs
DBConfig 数据库配置.
ErrCode 错误码结构体.
GinStructValidator 自定义参数 binding 验证错误信息输出格式.
GormBaseModel 基础 model 定义.
Hashids 封装hashids方法.
JSONTime 用于在 json 中自定义时间格式 json marshal 一个带有 time.Time 字段类型的结构体时,时间格式固定为 RFC3339 格式 将 time.Time 类型替换为 JSONTime 类型,可设置时间格式为 JSONTimeFormat 中定义的格式.
Pagination Paginate return it 异常数据时分页总数为 0 ,当前页码、上下页码均不判断逻辑,只管数值增减.