17 个 Go 第三方库:覆盖配置、CLI、Web、微服务与爬虫
Go 中第三方库通常称为 package。下面按使用场景列出 17 个常用 package。
配置文件处理库
1. Viper
处理 Go 应用配置,支持 JSON、TOML、YAML、HCL、.env、Java properties 等格式,可读取环境变量,并支持配置文件实时监控和重新加载,适用于 12-Factor 应用。
github.com/spf13/viper
命令行接口
2. Cobra
用于创建 Go CLI 应用,支持常规子命令、嵌套子命令和命令分组,兼容 POSIX 风格短/长参数,并能与 Viper 的配置能力集成。
github.com/spf13/cobra
环境变量
3. GoDotEnv
从 .env 文件读取变量,适合存放应用密钥;用法轻量,调用方式简单。
github.com/joho/godotenv
自动化构建
4. Task
用任务定义方式执行自动化命令,可替代部分 Makefile 场景;相比 Make 有更详细的说明性,本身无依赖,相对轻量。
taskfile.dev
动态编译
5. Air
开发 Go 项目时监听代码更新,检测到变化后自动重新编译并运行项目,适合本地开发热重载。
github.com/cosmtrek/air
Web 开发
6. Gin Web 框架
Go 中常见的 Web 开发库,提供构建 HTTP 服务和 API 所需的基础能力。
gin-gonic.com
7. Iris Web 框架
用于构建高性能 Web 应用和 API;如果用过 ExpressJS,使用体验会比较熟悉。
iris-go.com
日期管理
8. Carbon
Go 日期时间库,特点是轻量、易用,并提供语义化的日期时间调用方式。
github.com/golang-module/carbon
数据库 ORM
9. Gorm
Go ORM 库,面向 SQLite、PostgreSQL、MySQL 等关系型数据库,原文作者在 SQLite、PostgreSQL 和 MySQL 上使用过。
微服务
10. Echo
支持 RESTful API 设计的微服务/Web 框架,常用于构建 Go 微服务接口。
echo.labstack.com/guide
11. go-micro
Go 微服务框架,内置身份验证和数据存储设计,可作为同领域微服务方案使用。
github.com/go-micro/go-micro
Web 爬虫
12. Colly
Go 网页爬虫框架,适合存档和数据挖掘场景。
github.com/gocolly/colly
13、Retry
用于重试逻辑和回退控制,可扩展性高,能控制重试发生的方式和时间,也可通过实现 backoff 接口编写自定义退避函数。
github.com/sethvargo/go-retry
14、endless
用于 Go HTTP 和 HTTPS 服务器的零停机重启。
github.com/fvbock/endless
15、定时任务 cron
用于按 cron 表达式调度定时任务。
github.com/robfig/cron
其他
16. Go-Redis
Go Redis 客户端,兼容 Redis 6 和 7,设置过程简单。
github.com/go-redis/redis
17. go-elasticsearch
Elasticsearch 官方 Go 客户端。
github.com/elastic/go-elasticsearch