gox 是一个 Go 语言工具库,提供了一系列常用的功能模块,涵盖并发、网络、加密、字符串处理、时间处理、文件操作等多个领域。
| 包 | 描述 |
|---|---|
| conc | 并发工具集,包含原子操作、互斥锁、通道、协程池、障碍器、懒加载等 |
| barrier | 同步障碍器 |
| chanx | 通道操作工具,包含扇入扇出、管道、过滤等功能 |
| goroutinex | 协程工具 |
| mutexx | 互斥锁扩展 |
| oncex | 一次性执行组 |
| poolx | 对象池和缓冲区池 |
| waiter | 等待组扩展 |
| asyncbatch | 异步批量处理 |
| gofer | 协程池抽象接口 |
| lazyload | 懒加载组 |
| brave | 带恢复的协程执行 |
| 包 | 描述 |
|---|---|
| addrx | 网络地址工具,IP 获取、端口选择、IP 转换等 |
| httpx | HTTP 客户端/服务端工具 |
| netx | 网络工具(预留) |
| 包 | 描述 |
|---|---|
| cryptox | 加密工具集 |
| aesx | AES 加密 |
| hmacx | HMAC 签名 |
| md5x | MD5 哈希 |
| rsax | RSA 加密与签名 |
| shax | SHA 哈希家族 |
| tlsx | TLS 配置 |
| x509 | X.509 证书工具 |
| auth | 认证工具(Basic Auth) |
| 包 | 描述 |
|---|---|
| databasex | 数据库工具集 |
| pagex | 分页工具 |
| sqls | SQL 安全检查 |
| unsafesql | SQL 拼接构造器 |
| 包 | 描述 |
|---|---|
| stringx | 字符串工具集 |
| strconvx | 字符串转换工具 |
| textx | 文本编码转换(中文、日文、韩文) |
| fmtx | 格式化工具 |
| 包 | 描述 |
|---|---|
| timex | 时间工具集,包含日期计算、时间比较等 |
| 包 | 描述 |
|---|---|
| reflectx | 反射工具,字段访问、类型操作等 |
| constraintx | 泛型约束工具 |
| protox | Protobuf 工具,消息克隆、切片转换等 |
| 包 | 描述 |
|---|---|
| filex | 文件操作工具,复制、解压、遍历等 |
| iox | IO 工具,复制、关闭、长度计算等 |
| 包 | 描述 |
|---|---|
| imagex | 图片处理工具,格式转换、缩放、旋转等 |
| 包 | 描述 |
|---|---|
| errorx | 错误处理工具,错误链、多错误合并等 |
| 包 | 描述 |
|---|---|
| gen | 代码生成工具 |
| 包 | 描述 |
|---|---|
| heapx | 堆结构 |
| listx | 双向链表、无锁队列 |
| mapx | 映射工具 |
| ringx | 环形缓冲区 |
| slicex | 切片工具 |
| sortx | 排序工具 |
| distributed | 分布式工具,子集选择、序列生成等 |
| 包 | 描述 |
|---|---|
| slogx | 日志扩展,结构化日志、上下文等 |
| 包 | 描述 |
|---|---|
| backoff | 退避算法,指数退避、斐波那契、线性等 |
| retry | 重试策略 |
| 包 | 描述 |
|---|---|
| runtimex | 运行时工具,堆栈获取等 |
| osx | 操作系统工具,环境变量、信号处理等 |
| 包 | 描述 |
|---|---|
| operator | 运算符工具,指针、三元运算符等 |
| 包 | 描述 |
|---|---|
| randx | 随机数工具,支持多种随机数生成器 |
| 包 | 描述 |
|---|---|
| contextx | 上下文工具 |
| 包 | 描述 |
|---|---|
| tools | 通用工具集 |
| 包 | 描述 |
|---|---|
| mathx | 数学工具,数值比较、四舍五入等 |
| 包 | 描述 |
|---|---|
| bytex | 二进制数据处理工具,Diff、编辑等 |
go get github.com/soyacen/goxpackage main
import (
"fmt"
"github.com/soyacen/gox/slicex"
"github.com/soyacen/gox/strconvx"
)
func main() {
// 切片工具
nums := []int{3, 1, 4, 1, 5, 9, 2, 6}
max := slicex.Max(nums)
fmt.Println("Max:", max)
// 字符串转换
i, _ := strconvx.ParseInt[int]("42", 10, 0)
fmt.Println("Parsed:", i)
}MIT License