golib是一个golang工具组件库,包含了一些个人在项目开发过程中总结的一些常用的工具函数和组件。
组件列表:
- codegen 代码生成工具
- conc 并发控制组件(包含 concpool、concqueue、concsem)
conf配置文件读取组件- database 数据库客户端组件(支持 MySQL、Redis、Elasticsearch)
distlock分布式锁组件(不支持可重入)- excel Excel 读写组件
gast语法树工具gauth鉴权组件(包含 jwtauth)gcontext上下文工具组件gerror错误处理组件glog日志组件gutil常用工具函数集合- protocol 协议组件(包含 ghttp、gresty)
ratelimit限流组件
go get github.com/morehao/golibcodegen 是一个代码生成工具,通过读取数据库表结构,支持生成基础的 CRUD 代码,包括 router、controller、service、dto、model、errorCode 等。
- 支持 MySQL 数据库
- 支持模板自定义和模板参数自定义
- 支持基于模板生成代码
使用示例参照 codegen 单测
conc 是并发控制组件集合,提供了多种并发场景的解决方案。
- concpool: 工作池,支持任务提交、并发控制、优雅关闭等功能
- concqueue: 基于生产者-消费者模型的并发任务队列,支持并发控制和错误统计
- concsem: 信号量控制,用于限制并发数量
- 支持灵活的并发数控制
- 支持任务队列管理
- 支持优雅关闭和错误收集
- 线程安全
使用示例参照 concqueue 使用说明
database 是数据库客户端组件集合,提供了多种数据库的封装和连接管理。
- dbmysql: MySQL 数据库客户端,基于 GORM 封装
- dbredis: Redis 客户端,基于 go-redis 封装
- dbes: Elasticsearch 客户端,基于官方客户端封装
- 统一的配置接口
- 集成日志记录
- 支持连接池配置
- 支持超时控制
excel 是基于 excelize 的简单封装,支持通过结构体便捷地读写 Excel 文件。
无论是读取 Excel 还是写入 Excel,都需要定义一个结构体,结构体的字段通过 tag(即 ex)来指定 Excel 的相关信息。
- 通过结构体标签定义 Excel 列映射关系
- 支持读取和写入 Excel 文件
- 支持基于 validator 的数据验证
使用示例参照 excel 使用说明
protocol 是协议相关组件集合,提供了 HTTP 客户端的封装。
- ghttp: 增强的 HTTP 客户端,支持结构体映射、连接池、智能重试等功能
- gresty: 基于 Resty 的 HTTP 客户端封装,支持 SSE(Server-Sent Events)
- 支持结构体自动映射
- 支持连接池优化
- 支持智能重试机制(4xx 不重试,5xx 重试)
- 支持 SSE 长连接
- 丰富的配置选项
使用示例参照 ghttp 使用说明