GOLF - GO Library Functions
来米零售 团队内部的 Go 通用工具函数库。
暂时将项目中立、需要复用的包都放在一起。等到某个包相对成型,需要独立管理的时候再分拆。
concurrency : 本身就是用于提供并发安全的功能log : 通用日志封装,可以安全地并发调用,包括获取 子 logger,输出日志,等go get cnb.cool/letmelife/open/golf
注意:
import "cnb.cool/letmelife/open/golf/attempt"),然后由 IDE 触发 go get 自动安装提供通用接口和适配器,解耦具体实现,作为防腐层避免基础设施侵入业务逻辑。
其中一个典型场景是依赖注入和在测试中模拟(mock)依赖。
详细文档:adapter
提供各种通用的、又暂时没有合适第三方标准实现的算法。
详细文档:alg
提供扩展的测试断言功能,主要用于处理特殊的测试场景。
详细文档:assertx
提供可配置的重试机制和轮询功能。
详细文档:attempt
提供各种校验和算法的实现。
详细文档:checksum
提供并发安全的工具。
功能特性:
详细文档:concurrency
提供常用的容器数据结构实现。
详细文档:container
提供密码学相关工具。
!!注意!! 该包仅对已经成熟的算法工具进行封装,提供方便的工具入口,不提供新的算法实现。 严禁自行发明新算法! 严禁自行实现已有算法!
由于相关子包较多,以 crypto 为一级子包,二级子包以以下方式组织:
- 每个子包下,可能会再按 sec / insec 划分,前者是安全实现(基于当前主流算力安全),后者是非安全实现(当前已被证明不安全)。
- 详细文档放在二级子包下。
详细文档:fileutil
提供地理坐标系统和地理计算功能,支持多种坐标系统转换和距离计算算法。
详细文档:geo
提供优雅执行和停止的工具包。
详细文档:grace
详细文档:httputil
统一的日志 facade 接口和实现。
详细文档:log
提供同步原语的扩展功能,增强标准库 sync 包的能力。
详细文档:syncx
基于优先队列的定时任务队列。
详细文档:timerqueue
特定环境下使用、需要额外注意的不安全操作。
警告:此包包含不安全的操作,使用时需要特别小心,确保理解其风险。
详细文档:unsafe
提供值类型的扩展功能,增强标准库值类型的能力。
详细文档:value
代码规范
go fmt 和 go vet 确保代码格式正确测试要求
go test ./... 确保测试通过提交流程
项目中立性
Copyright (c) 2024 LetMeLife Team.
本项目当前采用私有许可证,具体要求如下:
如需了解更多信息或获取商业授权,请联系项目维护团队。
该许可属于过渡时期的临时许可。我们将在内部商议后采用合适的开源协议,届时会更新此说明。