/awesome-go

A curated list of awesome Go frameworks, libraries and software

Apache License 2.0Apache-2.0

awesome-go

Actor 模型

用于构建基于 Actor 的程序的库

  • Ergo - Golang 的基于 Actor 的框架,具有网络透明性,灵感来自 Erlang。
  • ProtoActor - 高效分布式 Actor 框架,支持 Go、C#、Java/Kotlin。

人工智能 (AI)

用于构建 AI 程序的库

  • langchaingo - 基于语言模型开发应用的框架。
  • LocalAI - 开源的 OpenAI 替代方案,可以自托管 AI 模型。

音频与音乐

用于处理音频的库

  • flac - 原生 Go FLAC 编码/解码库。
  • GoAudio - Go 语言的音频处理库。
  • Oto - 支持多平台播放音频的低级别库。

身份认证与 OAuth

用于实现身份认证方案的库

  • authboss - 模块化身份认证系统,适合快速开发 web 应用时直接使用。
  • casbin - 支持 ACL、RBAC、ABAC 的访问控制库。
  • gologin - 支持 OAuth1 和 OAuth2 的身份认证处理器。
  • goth - 简洁的 OAuth 和 OAuth2 处理库,支持多种身份提供商。
  • jwt-go - 全功能 JSON Web Token (JWT) 实现库,支持解析、验证、生成和签名。
  • keto - 开源的权限系统,基于 Google 的 Zanzibar 论文实现,支持 ACL、RBAC 等模型。
  • oauth2 - 通用 OAuth 2.0 包,支持 JWT、Google API、Compute Engine 等。
  • oidc - 使用简单的 OpenID Connect 客户端和服务器库,通过 OpenID 基金会认证。

区块链工具

最常用的工具

  • cosmos-sdk: 构建公共区块链的框架,主要用于 Cosmos 生态。
  • go-ethereum: 以太坊协议的官方 Go 实现。
  • tendermint: 高性能的中间件,用于将状态机转换为拜占庭容错的区块链系统。

机器人开发库

最常用的工具

  • bot: 无依赖的 Telegram 机器人库,包含 UI 组件。
  • go-chat-bot: 用于 IRC、Slack 和 Telegram 的通用聊天机器人。
  • telebot: 用 Go 语言编写的 Telegram 机器人框架。

构建自动化工具

最常用的工具

  • air: Go 应用的实时重载工具。
  • Task: 类似于 Make 的简单替代工具,用于任务管理。
  • mage: 使用 Go 语言编写的 make/rake 类构建工具。

命令行界面开发库

常用库

  • cobra: 用于构建现代 Go 命令行应用程序的工具。
  • pflag: Go 语言 flag 包的替代品,支持 POSIX/GNU 风格的命令行参数解析。
  • urfave/cli: 构建命令行应用的简单且有趣的包。

配置管理库

常用工具

  • viper: 功能强大的配置管理库,支持 JSON、TOML、YAML 等多种格式。
  • env: 将环境变量解析为 Go 结构体的工具,支持默认值。
  • godotenv: 从 .env 文件加载环境变量的工具。

数据库工具

常用数据库实现

  • bbolt: Go 实现的嵌入式键值数据库。
  • badger: 快速的键值存储,使用 Go 语言编写。
  • prometheus: 时间序列数据库与监控系统。

SQL 构建器

  • gorm: 强大的 ORM 库,支持多种数据库。
  • sqlc: 从 SQL 生成类型安全代码的工具。
  • goqu: 直观的 SQL 构建和查询库。

分布式系统开发

常用工具

  • go-kit: 支持服务发现、负载均衡等功能的微服务工具包。
  • go-zero: 提供稳定性保障的 Web 和 RPC 框架,集成了代码生成工具 goctl
  • rpcx: 类似于 Dubbo 的分布式可插拔 RPC 框架。

邮件处理工具

常用库

  • email: 灵活且健壮的邮件库,用于创建和发送邮件。
  • gomail: 简单易用的邮件发送库。
  • MailHog: 邮件和 SMTP 测试工具,具有 Web 界面和 API 接口。

常用的GUI开发库

工具包

  • fyne - 基于Material Design的跨平台GUI库,支持Linux、macOS、Windows、BSD、iOS和Android。
  • gio - 即时模式的跨平台GUI库,支持主要平台:Linux、macOS、Windows、Android、iOS等。
  • gotk3 - GTK3的Go语言绑定。
  • qt - Go语言的Qt绑定,支持多个平台:Windows、macOS、Linux等。
  • Wails - 利用系统自带的HTML渲染器开发Mac、Windows和Linux桌面应用。
  • webview - 简单的跨平台Webview,适用于Windows、macOS、Linux。

交互工具

  • robotgo - 跨平台的GUI系统自动化库,可以控制鼠标、键盘等。
  • systray - 用于创建系统通知区域图标的跨平台库。

硬件交互常用库

  • ghw - 硬件信息探测库。
  • go-rpio - GPIO控制库,适用于树莓派,不需要cgo。
  • gocv - 基于OpenCV的计算机视觉库。

图片处理库

  • imaging - 简单易用的Go图像处理库。
  • gg - 2D图形渲染库。
  • bimg - 使用libvips实现高效图像处理的小型库。
  • go-qrcode - 支持自定义颜色和图标的二维码生成库。

IoT物联网开发库

  • periph - 设备外设接口库,帮助开发低层硬件交互代码。
  • gobot - 机器人、物理计算和物联网的框架。

任务调度

  • gocron - 简单易用的Go语言任务调度库。
  • gron - 使用简单API定义基于时间的任务,自动运行。

JSON处理库

  • GJSON - 通过一行代码从JSON中获取值。
  • go-json - 高性能的JSON处理库,替代标准库。

日志处理库

  • logrus - 结构化日志库,支持多种格式和输出方式。
  • zap - 高性能的结构化日志库。
  • zerolog - 零内存分配的JSON日志库。

机器学习库

  • gorgonia - 类似于Theano的图计算库,支持构建机器学习算法。
  • gorse - 基于协同过滤的推荐系统。

HTTP客户端库

  • resty - 简洁易用的HTTP和REST客户端。
  • grequests - 类似于Python Requests的HTTP客户端。

ORM库

  • GORM - 功能强大的ORM库,适合开发者使用。
  • ent - 实体框架,简洁强大的ORM解决方案。
  • bun - SQL优先的ORM库,支持PostgreSQL、MySQL等。

项目结构模板

字符串处理库

  • gobeam/Stringy - 支持字符串的驼峰、蛇形、短横线转换等操作。
  • strutil - 字符串工具库。
  • xstrings - 提供其他语言中的常用字符串操作方法。

语言检测和处理

  • whatlanggo - 支持84种语言的自然语言检测包。
  • go-stem - 词干提取库,支持Porter算法。

网络库

  • fasthttp - 高性能HTTP库,速度比标准库快。
  • gopacket - 数据包处理库,适合网络分析。
  • quic-go - QUIC协议的纯Go实现。

OpenGL开发库

  • gl - OpenGL的Go绑定。
  • glfw - GLFW 3的Go绑定,用于创建OpenGL上下文和处理事件。

常用依赖注入库

  • wire - 自动初始化工具。
  • dig - 基于反射的依赖注入工具包。
  • fx - 基于依赖注入的应用程序框架。

模板引擎

常用的Go语言模板引擎库。

  • goview - 基于 Go 的轻量级、简洁的模板库,适用于构建 Go Web 应用程序。
  • pongo2 - 类似 Django 的模板引擎,功能强大且易于使用。
  • jet - 强大的模板引擎,提供良好的性能和模板继承支持。
  • quicktemplate - 高效的模板引擎,将模板转换为 Go 代码后编译。

测试

用于测试代码库和生成测试数据的常用工具库。

测试框架

  • Testify - 常用的 Go 测试扩展库,提供断言和 mock 支持。
  • GoConvey - BDD 风格测试框架,带有 Web UI 和实时刷新功能。
  • ginkgo - 适用于 Go 的 BDD 测试框架。

Mock 工具

  • gomock - Go 语言的常用 mock 框架,用于生成模拟接口的对象。
  • go-sqlmock - Mock SQL 驱动程序,用于测试数据库交互。

Fuzz 测试

  • go-fuzz - 随机化测试工具,用于找出边界条件和潜在问题。

Selenium 和浏览器控制工具

  • chromedp - Chrome Debugging Protocol 的 Go 绑定,用于控制浏览器进行自动化测试。

文本处理

用于解析和操作文本的常用库。

格式化工具

  • go-humanize - 将时间、数字和内存大小格式化为可读形式。
  • gotabulate - 方便地将表格数据美观地打印出来。

标记语言

  • goldmark - 现代的 Markdown 解析器,符合 CommonMark 标准,易于扩展。
  • html-to-markdown - 将 HTML 转换为 Markdown 的工具。

爬虫工具

  • colly - 高效的爬虫框架,用于从网站抓取结构化数据。
  • GoQuery - 提供类似 jQuery 的 API,以便轻松地解析和操作 HTML 文档。

第三方 API

用于访问各种第三方服务 API 的库。

  • aws-sdk-go - 官方 AWS SDK for Go,支持访问 AWS 的所有服务。
  • discordgo - 适用于 Discord 聊天 API 的 Go 绑定。
  • go-openai - OpenAI 的 ChatGPT、DALL·E、Whisper API 库。
  • slack - Slack API 的 Go 客户端。
  • github - 访问 GitHub REST API v3 的 Go 库。
  • google-cloud - Google Cloud API 的 Go 客户端库。

以下是简化后的常用工具、库和框架列表,更加贴近**用户的需求,去掉了小众和过时内容,并以Markdown格式展示:

常用工具

使开发更高效的通用工具和库。

  • clipboard - 跨平台剪贴板工具包。
  • cvt - 安全、方便地将任意值转换为其他类型。
  • delve - Go语言调试器。
  • dive - 用于探索Docker镜像中每一层的工具。
  • fzf - Go编写的命令行模糊查找工具。
  • goreleaser - 快速生成Go二进制文件发布工具。
  • gotenv - 从 .env 文件中加载环境变量。
  • lo - 类似 Lodash 的 Go 语言工具库,基于 Go 1.18+ 泛型实现。
  • sqlx - 为标准 database/sql 包增加了扩展功能。

UUID 生成库

用于生成唯一标识符的库。

  • nanoid - 高效且轻量级的Go唯一字符串ID生成器。
  • ulid - Go实现的ULID(通用唯一可排序标识符)。
  • uuid - 基于RFC 4122的Go UUID库。

验证库

数据验证库。

  • govalidator - 字符串、数值、切片和结构体的验证和过滤器。
  • validator - Go结构体和字段验证,支持交叉字段、交叉结构体、Map、Slice和数组。

Web 框架

全栈Web框架。

  • Beego - 高性能的开源Go Web框架。
  • Echo - 高性能、简洁的Go Web框架。
  • Fiber - 类似Express.js的Web框架,基于 fasthttp 实现。
  • Gin - 高性能、简洁的Go Web框架。
  • Goravel - 受Laravel启发的Go Web框架,内置ORM、认证、队列等功能。

中间件

  • CORS - 轻松为API添加CORS支持。
  • Tollbooth - HTTP请求速率限制中间件。
  • Limiter - 简单的速率限制中间件。

路由库

  • chi - 小巧、快速且表现力丰富的HTTP路由库。
  • httprouter - 高性能HTTP路由库。
  • mux - 功能强大的URL路由和调度器。

代码分析工具

源代码分析工具。

  • golangci-lint - 快速的Go静态分析工具,支持多种linters。
  • staticcheck - 类似go vet的静态分析工具,包含多种检查。

Go工具

提高开发效率的Go语言相关工具。

  • go-callvis - 使用dot格式可视化Go程序的调用图。
  • go-swagger - Swagger 2.0的Go实现,用于自动化生成REST API文档。
  • richgo - 美化 go test 输出结果。
  • gotestdox - 将Go测试结果展示为可读的句子。

软件包

Go编写的软件。

DevOps 工具

  • Docker - 为开发人员和系统管理员提供的分布式应用程序开源平台。
  • Flannel - Kubernetes 容器网络工具。
  • Gitea - Gogs的社区分支,轻量级的Git服务。
  • Hey - 一个小型的程序,用于向Web应用程序发送负载。
  • k3s - 轻量级Kubernetes。
  • k6 - 现代化的负载测试工具,使用Go和JavaScript编写。
  • minikube - 在本地运行Kubernetes。
  • Traefik - 反向代理和负载均衡器,支持多种后端。

其他软件

  • croc - 在计算机之间安全、轻松地发送文件或文件夹。
  • hugo - 快速现代的静态网站引擎。
  • restic - 去重备份程序。
  • syncthing - 开源的分布式文件同步工具。

资源

E-Books

免费电子书

社区资源

Reddit

  • r/golang - Go语言的新闻和讨论社区。

网站

指南