logo
0
0
WeChat Login

GOLF

GOLF - GO Library Functions

来米零售 团队内部的 Go 通用工具函数库。

暂时将项目中立、需要复用的包都放在一起。等到某个包相对成型,需要独立管理的时候再分拆。

重要说明

  1. 本库主要面向团队内部使用,API 可能会随时变动
  2. 除以下提到的包外,其他包基于性能考虑,并没有特意考虑并发安全,需要自行判断使用场景,必要时自行加锁
  • concurrency : 本身就是用于提供并发安全的功能
  • log : 通用日志封装,可以安全地并发调用,包括获取 子 logger,输出日志,等

安装

go get cnb.cool/letmelife/open/golf

注意:

  • cnb.cool 支持基于子包路径的 get / install
  • 因此,如需安装某个子包,可以直接添加 import (如 import "cnb.cool/letmelife/open/golf/attempt"),然后由 IDE 触发 go get 自动安装

功能包说明(按字典序排列)

adapter 适配器包

提供通用接口和适配器,解耦具体实现,作为防腐层避免基础设施侵入业务逻辑。

其中一个典型场景是依赖注入和在测试中模拟(mock)依赖。

详细文档:adapter

alg 算法包

提供各种通用的、又暂时没有合适第三方标准实现的算法。

详细文档:alg

assertx 断言扩展包

提供扩展的测试断言功能,主要用于处理特殊的测试场景。

详细文档:assertx

attempt 重试包

提供可配置的重试机制和轮询功能。

详细文档:attempt

checksum 校验和算法包

提供各种校验和算法的实现。

详细文档:checksum

concurrency 并发工具包

提供并发安全的工具。

功能特性:

  • Recover: 支持 cleanup 的 goroutine panic 恢复机制
  • WithTimeout: 在 goroutine 中执行函数,支持超时与取消

详细文档:concurrency

container 容器包

提供常用的容器数据结构实现。

详细文档:container

crypto 密码学工具包

提供密码学相关工具。

!!注意!! 该包仅对已经成熟的算法工具进行封装,提供方便的工具入口,不提供新的算法实现。 严禁自行发明新算法! 严禁自行实现已有算法!

由于相关子包较多,以 crypto 为一级子包,二级子包以以下方式组织:

  1. 每个子包下,可能会再按 sec / insec 划分,前者是安全实现(基于当前主流算力安全),后者是非安全实现(当前已被证明不安全)。
  2. 详细文档放在二级子包下。
  • hash: 哈希摘要,详细文档:hash
  • random: 随机数,详细文档:random
  • encrypt: 加解密,规划预留,后续根据需求增加
  • password: 密码哈希,详细文档:password

fileutil 文件工具包

详细文档:fileutil

geo 地理包

提供地理坐标系统和地理计算功能,支持多种坐标系统转换和距离计算算法。

详细文档:geo

grace 优雅启停包

提供优雅执行和停止的工具包。

详细文档:grace

httputil HTTP 客户端工具包

详细文档:httputil

log 日志 facade 包

统一的日志 facade 接口和实现。

详细文档:log

syncx 同步原语扩展包

提供同步原语的扩展功能,增强标准库 sync 包的能力。

详细文档:syncx

timerqueue 定时任务队列包

基于优先队列的定时任务队列。

详细文档:timerqueue

unsafe 不安全操作包

特定环境下使用、需要额外注意的不安全操作。

警告:此包包含不安全的操作,使用时需要特别小心,确保理解其风险。

详细文档:unsafe

value 值类型扩展包

提供值类型的扩展功能,增强标准库值类型的能力。

详细文档:value

贡献指南

  1. 代码规范

    • 遵循 Effective Go 规范
    • 运行 go fmtgo vet 确保代码格式正确
    • 确保代码注释完整,遵循 godoc 规范
  2. 测试要求

    • 所有代码必须通过单元测试
    • 运行 go test ./... 确保测试通过
    • 新功能需要添加相应的测试用例
  3. 提交流程

    • 创建功能分支进行开发
    • 提交前进行代码自查
    • 提交信息需要清晰描述改动
    • 提交 PR 时附上改动说明和测试结果
  4. 项目中立性

    • 不能包含具体业务逻辑和依赖
    • 禁止包含密钥、证书等敏感信息
    • 发现敏感信息需要通过 rebase 清除历史记录

许可说明

Copyright (c) 2024 LetMeLife Team.

本项目当前采用私有许可证,具体要求如下:

  • 允许:源码开源使用
  • 限制:
    • 修改许可证
    • 修改后闭源
    • 基于本库源码的衍生品用于商业用途
    • 使用本库或我司名义进行宣传

如需了解更多信息或获取商业授权,请联系项目维护团队。

该许可属于过渡时期的临时许可。我们将在内部商议后采用合适的开源协议,届时会更新此说明。

About

Go 语言相关的工具库。暂时将项目中立、需要复用的包都放在一起。等到某个包相对成型,需要独立管理的时候再分拆。

Language
Go100%