AwesomeGo精选的Go框架、库和软件集

Awesome Go

Awesome Go 无需月费,但我们的员工辛勤工作,确保它持续运行。筹集到的资金将用于回馈每一位参与者的辛勤付出!您可以查看我们如何计算账单和分配,因为它面向整个社区开放。想要成为该项目的支持者,请点击此处

精选的优秀 Go 框架、库和软件列表。灵感来自 awesome-python

贡献:

请先快速浏览贡献指南。感谢所有贡献者;你们太棒了!

如果您发现此处的某个软件包或项目不再维护或不再适用,请提交拉取请求以改进此文件。谢谢!

⬆ 返回顶部

Actor 模型

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

  • Ergo - 一个基于 Actor 的框架,具有网络透明性,用于在 Golang 中创建事件驱动架构。灵感源自 Erlang。
  • Goakt - 一个快速分布式 Actor 框架,使用协议缓冲区作为 Golang 的消息传递。
  • Hollywood - 一个用 Golang 编写的超快轻量级 Actor 引擎。
  • ProtoActor - Proto Actor - 适用于 Go、C# 和 Java/Kotlin 的超快速分布式 Actor。

人工智能

用于构建利用人工智能程序的库。

  • chromem-go - 可嵌入 Go 语言的向量数据库,具有类似 Chroma 的接口,零第三方依赖。支持内存存储,并可选持久化。
  • fun - 在 Go 中使用大型语言模型 (LLM) 的最简单但强大的方法。
  • langchaingo - LangChainGo 是一个由语言模型驱动的应用程序开发框架。
  • LocalAI - 开源 OpenAI 替代方案,自托管人工智能模型。
  • Ollama - 在本地运行大型语言模型。
  • OllamaFarm - 管理、负载均衡和故障转移 Ollamas 包

⬆ 返回顶部

音频和音乐

用于处理音频的库。

  • flac - 支持 FLAC 流的原生 Go FLAC 编码器/解码器。
  • gaad - 原生 Go AAC 比特流解析器。
  • GoAudio - 原生 Go 音频处理库。
  • gosamplerate - 适用于 Go 的 libsamplerate 绑定。
  • id3v2 - 适用于 Go 的 ID3 解码和编码库。
  • malgo - 迷你音频库。
  • minimp3 - 轻量级 MP3 解码器库。
  • Oto - 一个用于在多个平台上播放声音的底层库。
  • PortAudio - PortAudio 音频 I/O 库的 Go 绑定。

⬆ 返回顶部

身份验证和授权

用于实现身份验证和授权的库。

  • authboss - 面向 Web 的模块化身份验证系统。它尽可能地去除样板代码和“复杂的东西”,以便每次使用 Go 启动新的 Web 项目时,您都可以将其插入、配置并开始构建您的应用,而无需每次都构建身份验证系统。
  • branca - 适用于 Golang 1.15+ 版本的 branca token 规范实现
  • casbin - 支持 ACL、RBAC 和 ABAC 等访问控制模型的授权库。
  • cookiestxt - 提供 cookies.txt 文件格式的解析器。
  • go-guardian - Go-Guardian 是一个 Golang 库,它提供了一种简单、干净且符合地道的方式来创建强大的现代 API 和 Web 身份验证,支持 LDAP、Basic、Bearer token 和基于证书的身份验证。
  • go-jose - JOSE 工作组 JSON Web Token、JSON Web 签名和 JSON Web 加密规范的较为完整的实现。
  • goiabada - 一个支持 OAuth2 和 OpenID Connect 的开源身份验证和授权服务器。
  • gologin - 可链接的处理程序,用于使用 OAuth1 和 OAuth2 身份验证提供程序进行登录。
  • gorbac - 用 Golang 语言提供了一个轻量级的基于角色的访问控制 (RBAC) 实现。
  • gosession - 这是 GoLang 语言中 net/http 的快速会话。这个包可能是会话机制的最佳实现,或者至少它正在努力成为最佳实现。
  • goth - 提供一种简单、干净且符合 OAuth 和 OAuth2 规范的方式。开箱即用,支持多服务提供商。
  • jeff - 简单、灵活、安全且符合规范的 Web 会话管理,具有可插拔的后端。
  • jwt - 轻量级 JSON Web Token (JWT) 库。
  • jwt - 安全、简单、快速的 Go 语言 JSON Web Token。
  • jwt-auth - 适用于 Golang http 服务器的 JWT 中间件,具有丰富的配置选项。
  • jwt-go - JSON Web Tokens (JWT) 的全功能实现。该库支持 JWT 的解析和验证,以及生成和签名。
  • jwx - 实现各种 JWx (JWA/JWE/JWK/JWS/JWT,也称为 JOSE) 技术的 Go 模块。
  • keto - “Zanzibar:Google 的一致全局授权系统”的开源 (Go) 实现。提供 gRPC、REST API、newSQL 以及一种简单易用的权限语言。支持 ACL、RBAC 和其他访问模型。
  • loginsrv - JWT 登录微服务,支持可插拔后端,例如 OAuth2 (Github)、htpasswd 和 osiam。
  • oauth2 - goauth2 的后继者。通用的 OAuth 2.0 软件包,支持 JWT、Google API、Compute Engine 和 App Engine。
  • oidc - 易于使用的 OpenID Connect 客户端和服务器库,使用 Go 编写,并经 OpenID 基金会认证。
  • openfga - 基于“Zanzibar:Google 的一致全局授权系统”论文,实现细粒度授权。由 CNCF 支持。
  • osin - Golang OAuth2 服务器库。
  • otpgen - 用于生成 TOTP/HOTP 代码的库。
  • otpgo - Go 的基于时间的一次性密码 (TOTP) 和基于 HMAC 的一次性密码 (HOTP) 库。
  • paseto - 平台无关安全令牌 (PASETO) 的 Golang 实现。
  • permissions - 用于跟踪用户、登录状态和权限的库。使用安全 Cookie 和 bcrypt。
  • scope - 使用 Go 轻松管理 OAuth2 作用域。
  • scs - HTTP 服务器的会话管理器。
  • securecookie - 高效的安全 Cookie 编码/解码。
  • session - 用于 Web 服务器的 Go 会话管理(包括对 Google App Engine - GAE 的支持)。
  • sessions - 一款极其简单、高性能、高度可定制的 Go 语言 http 服务器会话服务。
  • sessionup - 简单高效的 HTTP 会话管理和身份识别包。
  • sjwt - 简单的 JWT 生成器和解析器。
  • spicedb - 一款受桑给巴尔启发的数据库,支持细粒度授权。
  • x509proxy - 用于处理 X509 代理证书的库。

⬆ 返回顶部

区块链

构建区块链的工具。

  • cometbft - 一个分布式、拜占庭容错、确定性状态机复制引擎。它是 Tendermint Core 的一个分支,并实现了 Tendermint 共识算法。
  • cosmos-sdk - 一个在 Cosmos 生态系统中构建公链的框架。
  • gno - 一个使用 Golang 和 Gnolang 构建的综合智能合约套件,Gnolang 是一个确定性的、专为区块链设计的 Go 语言变体。
  • go-ethereum - 以太坊协议的官方 Go 实现。
  • gosemble - 一个基于 Go 语言的框架,用于构建兼容 Polkadot/Substrate 的运行时。
  • gossamer - Polkadot Host 的 Go 实现。
  • kubo - 一个用 Go 语言实现的区块链框架。它提供内容可寻址的存储,可用于 DApp 中的去中心化存储。它基于 IPFS 协议。
  • lnd - 一个完整的闪电网络节点实现。
  • solana-go - 一个 Go 库,用于与 Solana 的 JSON RPC 和 WebSocket 接口交互。
  • tendermint - 高性能中间件,使用 Tendermint 共识和区块链协议,将任何编程语言编写的状态机转换为拜占庭容错复制状态机。

⬆ 返回顶部

机器人构建

用于构建和使用机器人的库。

  • arikawa - Discord API 的库和框架。
  • bot - 零依赖 Telegram 机器人库,带有额外的 UI 组件
  • echotron - 一个优雅且并发的 Go 语言 Telegram 机器人库。
  • go-joe - 一个受 Hubot 启发,但使用 Go 编写的通用机器人库。
  • go-sarah - 用于构建聊天服务(包括 LINE、Slack、Gitter 等)的机器人框架。
  • go-tg - 由官方文档生成的 Go 客户端库,用于访问 Telegram Bot API,并包含构建复杂机器人所需的功能。
  • go-twitch-irc - 用于编写 twitch.tv 聊天机器人的库
  • micha - 用于 Telegram 机器人 API 的 Go 库。
  • slack-bot - 为懒惰开发者提供即用型 Slack Bot:自定义命令、Jenkins、Jira、Bitbucket、Github……
  • slacker - 易于使用的 Slack 机器人框架。
  • telebot - Telegram 机器人框架采用 Go 语言编写。
  • telego - 适用于 Golang 的 Telegram Bot API 库,提供完整的一对一 API 实现。
  • telegram-bot-api - 简洁干净的 Telegram 机器人客户端。
  • wayback - 一个适用于 Telegram、Mastodon、Slack 和其他消息平台存档网页的机器人。

⬆ 返回顶部

构建自动化

库和工具助力构建自动化。

  • 1build - 命令行工具,可轻松管理项目特定命令。
  • air - Air - Go 应用的实时重新加载。
  • anko - 适用于多种编程语言的简单应用程序监控器。
  • gaper - 当 Go 项目崩溃或监控到某些文件发生更改时,构建并重启 Go 项目。
  • gilbert - Go 项目的构建系统和任务运行器。
  • gob - 类似 Gradle/Maven 的 Go 项目构建工具。
  • goyek - 使用 Go 创建构建流水线。
  • mage - Mage 是一款使用 Go 语言编写的类似 make/rake 的构建工具。
  • mmake - 现代化的 Make 语言。
  • realize - Go 构建系统,带有文件监控器,并可实时刷新。使用自定义路径运行、构建并监控文件变化。
  • Task - 简单的“Make”替代方案。
  • taskctl - 并发任务运行器。
  • xc - 包含 README.md 定义任务和可执行 Markdown 文件的任务运行器。

⬆ 返回顶部

命令行

高级控制台 UI

用于构建控制台应用程序和控制台用户界面的库。

  • asciigraph - Go 包,用于在命令行应用程序中创建轻量级 ASCII 折线图 ╭┈╯,无需其他依赖项。
  • aurora - 支持 fmt.Printf/Sprintf 的 ANSI 终端颜色。
  • box-cli-maker - 为您的 CLI 制作高度定制的盒子。
  • bubble-table - bubbletea 的交互式表格组件。
  • bubbles - bubbletea 的 TUI 组件。
  • bubbletea - 基于 Elm 架构的 Go 框架,用于构建终端应用。
  • cfmt - 受 Bootstrap 颜色类启发的上下文 fmt。
  • cfmt - 简单便捷的格式化风格化输出,与 fmt 库完全兼容。
  • chalk - 用于美化终端/控制台输出的直观软件包。
  • crab-config-files-templating - 用于 Kubernetes 清单或通用配置文件的动态配置文件模板工具。
  • ctc - 非侵入式跨平台终端颜色库,无需修改 Print 方法。
  • fx - 终端 JSON 查看器和处理器。
  • go-ataman - 用于在终端中渲染 ANSI 彩色文本模板的 Go 库。
  • go-colorable - 适用于 Windows 的彩色编写器。
  • go-colortext - 用于终端颜色输出的 Go 库。
  • go-isatty - 用于 Go 语言的 isatty。
  • go-palette - 使用 ANSI 颜色提供优雅便捷样式定义的 Go 库。完全兼容并封装了 fmt,以实现美观的终端布局。
  • go-prompt - 用于构建强大交互式提示符的库,灵感源自 python-prompt-toolkit
  • gocui - 极简 Go 库,旨在创建控制台用户界面。
  • gommon/color - 用于设置终端文本样式。
  • gookit/color - 终端颜色渲染工具库,支持 16 色、256 色、RGB 颜色渲染输出,兼容 Windows。
  • lipgloss - 以声明方式定义终端中颜色、格式和布局的样式。
  • marker - 匹配和标记字符串以实现彩色终端输出的最简单方法。
  • mpb - 用于终端应用程序的多进度条。
  • progressbar - 适用于所有操作系统的基本线程安全进度条。
  • pterm - 一个用于美化各平台控制台输出的库,包含许多可组合的组件。
  • simpletable - 使用 Go 语言在终端中创建简单的表格。
  • spinner - Go 语言包,可轻松提供带有选项的终端旋转器。
  • tabbyllace/tabby) - 一个用于超级简单的 Golang 表格的小型库。
  • table - 用于终端颜色表格的小型库。
  • termbox-go - Termbox 是一个用于创建跨平台文本界面的库。
  • termdash - 基于 termbox-go 的 Go 终端仪表板,灵感来自 termui
  • termenv - 为您的终端应用程序提供高级 ANSI 样式和颜色支持。
  • termui - 基于 termbox-go 的 Go 终端仪表盘,灵感源自 blessed-contrib
  • uilive - 用于实时更新终端输出的库。
  • uiprogress - 灵活的库,用于在终端应用中渲染进度条。
  • uitable - 使用表格数据提升终端应用可读性的库。
  • yacspin - 另一个 CLi Spinner 包,用于处理终端 Spinner。

⬆ 返回顶部

标准 CLI

用于构建标准或基本命令行应用程序的库。

  • acmd - 简单、实用且功能强大的 Go 语言 CLI 包。
  • argparse - 受 Python argparse 模块启发的命令行参数解析器。
  • argv - Go 库,使用 Bash 语法将命令行字符串拆分为参数数组。
  • carapace - 适用于 spf13/cobra 的命令参数补全生成器。
  • carapace-bin - 多 Shell 多命令参数补全器。
  • carapace-spec - 使用 spec 文件定义简单的补全。
  • climax - 具有“人性化”界面的替代 CLI,秉承 Go 命令的精髓。
  • clîr - 一个简洁明了的 CLI 库,无需依赖。
  • cmd - 扩展标准 flag 包,以更符合语言习惯的方式支持子命令及更多功能。
  • cmdr - 一个 POSIX/GNU 风格、类似 getopt 的 Go 命令行 UI 库。
  • cobra - 用于现代 Go CLI 交互的 Commander。
  • command-chain - 一个用于配置和运行命令链的 Go 库 - 例如在 Unix Shell 中进行流水线操作。
  • commandeer - 开发者友好的 CLI 应用:根据结构体字段和标签设置标志、默认值和用法。
  • complete - 使用 Go 编写 bash 补全功能 + Go 命令 bash 补全。
  • console 一个用于 Cobra 命令的闭环应用程序库,带有 oh-my-posh 提示符等。
  • Dnote - 一个支持多设备同步的简单命令行笔记本。
  • elvish - 一种富有表现力的编程语言和一个多功能的交互式 Shell。
  • env - 基于标签的结构体环境配置。
  • flaggy - 一个健壮且符合语言习惯的 flags 包,具有出色的子命令支持。
  • flagvar - Go 标准 flag 包的 flag 参数类型集合。
  • getopt - 一个精确的 Go getopt 函数,已针对 GNU libc 实现进行验证。
  • go-arg - Go 中基于结构体的参数解析。
  • go-flags - Go 命令行选项解析器。
  • go-getoptions - Go 选项解析器,其灵感源自 Perl 的 GetOpt::Long 的灵活性。
  • go-readline-ny - 一个可自定义的行编辑库,包含 Emacs 快捷键绑定、Unicode 支持、自动补全和语法高亮功能。用于 NYAGOS shell。
  • gocmd - 用于构建命令行应用程序的 Go 库。
  • goopt - 一个声明式的、基于结构体标签的 Go 命令行框架,具有丰富的功能,例如分层命令/标志、国际化、shell 自动补全和验证。
  • hashicorp/cli - 用于实现命令行界面的 Go 库。
  • hiboot cli - 具有自动配置和依赖注入功能的 cli 应用框架。
  • job - JOB,可将短期命令转换为长期任务。
  • kingpin - 支持子命令的命令行和标志解析器(已被 kong 取代;详见下文)。
  • liner - 类似 readline 的 Go 命令行界面库。
  • mcli - 一个极简但功能强大的 Go cli 库。
  • mkideal/cli - 基于 Go 结构体标签,功能丰富且易于使用的命令行包。
  • mow.cli - 用于构建 CLI 应用程序的 Go 库,具有复杂的标志和参数解析和验证功能。
  • ops - Unikernel 构建器/编排器。
  • pflag - Go 标志包的直接替代品,实现 POSIX/GNU 风格的 --flags 选项。
  • readline - 具有现代且易于使用的 UI 功能的 Shell 库。
  • sand - 用于创建解释器等功能的简单 API。
  • sflags - 基于结构体的标志生成器,适用于 flag、urfave/cli、pflag、cobra、kingpin 和其他库。
  • strumt - 用于创建提示符链的库。
  • subcmd - 解析和运行子命令的另一种方法。与标准 flag 包协同工作。
  • teris-io/cli - 用于使用 Go 语言构建命令行界面的简单而完整的 API。
  • ts - 时间戳转换和比较工具。
  • ukautz/clif - 小型命令行界面框架。
  • urfave/cli - 用于使用 Go 语言构建命令行应用程序的简单、快速且有趣的包(以前称为 codegangsta/cli)。
  • version - 以多种格式收集并显示 CLI 版本信息以及升级通知。
  • wlog - 支持跨平台颜色和并发的简单日志记录接口。
  • wmenu - 适用于命令行应用程序的易于使用的菜单结构,可提示用户进行选择。

⬆ 返回顶部

配置

用于配置解析的库。

  • aconfig - 简单、实用且功能强大的配置加载器。
  • bcl - BCL 是一种类似于 HCL 的配置语言。
  • cleanenv - 极简配置读取器(可从文件、ENV 以及任何所需位置读取)。
  • config - 云原生应用配置。只需两行即可将 ENV 绑定到结构体。
  • config - 两行代码即可使用文件、环境变量或标志配置您的应用
  • configuration - 用于从环境变量、文件、标志和“default”标签初始化配置结构的库。
  • configure - 通过多种来源提供配置,包括 JSON、标志和环境变量。
  • configuro - 一个基于 ENV 和 Files 的、自主研发的配置加载和验证框架,专注于符合 12 要素规范的应用程序。
  • confiq - 用于 Go 结构化数据格式的配置结构体解码器库 - 支持多种数据格式
  • confita - 将多个后端的配置级联加载到结构体中。
  • conflate - 用于合并来自任意 URL 的多个 JSON/YAML/TOML 文件的库/工具,根据 JSON 模式进行验证,并应用模式中定义的默认值。
  • env - 将环境变量解析为 Go 结构体(带默认值)。
  • env - 一个用于将环境变量加载到结构体的轻量级包。
  • env - 一个支持解组为结构体的环境实用程序包
  • envconfig - 从环境变量读取配置。
  • envh - 管理环境变量的助手。
  • envyaml - 带有环境变量读取器的 Yaml 文件。它有助于将机密信息作为环境变量,但将其配置加载为结构化的 Yaml 文件。
  • fig - 一个小型库,用于从文件和环境变量读取配置(带有验证和默认值)。
  • genv - 借助 dotenv 支持轻松读取环境变量。
  • go-array - 一个 Go 包,用于从 map、slice 或 json 中读取或设置数据。
  • go-aws-ssm - 一个 Go 包,用于从 AWS System Manager - Parameter Store 获取参数。
  • go-cfg - 该库提供了一种统一的方法,可以从各种来源(例如环境变量、标志和配置文件 (.json、.yaml、.toml、.env))将配置数据读取到结构体中。
  • go-conf - 一个基于注解结构体的应用程序配置简单库。它支持从环境变量、配置文件和命令行参数中读取配置。
  • go-ini - 一个用于编组和解组 INI 文件的 Go 包。
  • go-ssm-config - 一个用于从 AWS SSM(参数存储)加载配置参数的 Go 实用程序。
  • go-up - 一个简单的配置库,具有递归占位符解析功能,没有任何魔法。
  • GoCfg - 配置管理器,包含基于结构体标签的合约、自定义值提供程序、解析器和文档生成功能。可定制且简单易用。
  • godotenv - Ruby dotenv 库的 Go 移植版本(从 .env 加载环境变量)。
  • gofigure - 轻松配置 Go 应用程序。
  • GoLobby/Config - GoLobby Config 是一款轻量级但功能强大的 Go 编程语言配置管理器。
  • gone/jconf - 模块化 JSON 配置。您可以将配置结构体与其配置代码放在一起,并将解析委托给子模块,而无需牺牲完整的配置序列化。
  • gonfig - 基于标签的配置解析器,可将来自不同提供程序的值加载到类型安全的结构体中。
  • gookit/config - 应用程序配置管理(加载、获取、设置)。支持 JSON、YAML、TOML、INI 和 HCL。支持多文件加载和数据覆盖合并。
  • harvester - Harvester,一个易于使用的静态和动态配置包,支持种子设置、环境变量和 Consul 集成。
  • hedzr/storere) - 可扩展、高性能的配置管理库,已针对分层数据进行优化。
  • hjson - 人性化的 JSON 配置文件格式。语法简洁,错误更少,注释更丰富。
  • hocon - 用于处理 HOCON(人性化的 JSON 超集)格式的配置库,支持环境变量、引用其他值、注释和多文件等功能。
  • ingo - 类似 ini 的配置文件,标志持久化。
  • ini - 用于读写 INI 文件的 Go 包。
  • ini - INI 解析和写入库,支持解组为结构体、编组为 JSON、写入文件、监视文件。
  • joshbetz/config - 一个小型的 Go 配置库,可解析环境变量和 JSON 文件,并在 SIGHUP 时自动重新加载。
  • kelseyhightower/envconfig - 用于管理环境变量配置数据的 Go 库。
  • koanf - 一个轻量级、可扩展的 Go 应用程序中的配置读取库。内置对 JSON、TOML、YAML、env 和命令行的支持。
  • konf - 用于从文件、env、flag 和云平台(例如 AWS、Azure、GCP)读取/查看配置的最简单的 API。
  • konfig - 面向分布式处理时代的 Go 可组合、可观察且高性能的配置处理工具。
  • kong - 命令行解析器,支持任意复杂的命令行结构以及其他配置源,例如 YAML、JSON、TOML 等(kingpin 的后继者)。
  • mini - 用于解析 ini 风格配置文件的 Golang 包。
  • nasermirzaei89/env - 用于读取环境变量的简单实用的包。
  • nfigure - 基于每个库的结构标签的命令行配置(Posix 和 Go 风格);环境、JSON、YAML
  • onion - 基于 Go 的分层配置,支持 JSON、TOML、YAML、属性、etcd、env 和 PGP 加密。
  • piper - Viper 封装器,支持配置继承和密钥生成。
  • sonic - 一个极速 JSON 序列化和反序列化库。
  • store - 轻量级 Go 的配置管理器。
  • swap - 根据构建环境(YAML、TOML、JSON 和 env)递归实例化/配置结构体。
  • typenv - 极简、零依赖、类型化的环境变量库。
  • uConfig - 轻量级、零依赖、可扩展的配置管理工具。
  • viper - 使用 fangs 进行 Go 配置。
  • xdg - XDG 基本目录规范XDG 用户目录 的 Go 实现。
  • yamagiconf - 用于 Go 配置的 YAML“安全子集”。
  • zerocfg - 零投入、简洁的配置管理,避免了样板代码和重复代码,并支持多个源,并可设置优先级覆盖。

⬆ 返回顶部

持续集成

持续集成辅助工具。

  • abstruse - Abstruse 是一个分布式持续集成 (CI) 平台。
  • Bencher - 一套持续基准测试工具,旨在捕捉持续集成 (CI) 中的性能回归问题。
  • CDS - 企业级持续集成/持续交付 (CI/CD) 和 DevOps 自动化开源平台。
  • dot - 一个极简的、本地优先的持续集成系统,使用 Docker 分阶段并发运行作业。
  • drone - Drone 是一个基于 Docker 构建的持续集成平台,使用 Go 语言编写。
  • go-beautiful-html-coverage - 一款 GitHub Action,用于免费跟踪拉取请求中的代码覆盖率,并提供精美的 HTML 预览。
  • go-fuzz-action - 在 GitHub Actions 中使用 Go 1.18 内置的模糊测试。
  • go-semver-release - 自动化 Git 代码库的语义版本控制。
  • go-test-coverage - 一款工具和 GitHub Action,用于在测试覆盖率低于设定阈值时报告问题。
  • gomason - 在干净的工作区中测试、构建、签名和发布您的 Go 二进制文件。
  • gotestfmt - 为 Go 测试人员提供输出。
  • goveralls - Go 集成,用于 Coveralls.io 持续代码覆盖率跟踪系统。
  • muffet - Go 语言快速网站链接检查器,请参阅 alternatives
  • overalls - 为 goveralls 等工具提供多包 Go 项目 Coverprofile。
  • roveralls - 递归覆盖率测试工具。
  • woodpecker - Woodpecker 是 Drone CI 系统的社区分支。

⬆ 返回顶部

CSS 预处理器

用于预处理 CSS 文件的库。

  • go-libsass - 100% 兼容 Sass 的 libsass 项目的 Go 封装器。

⬆ 返回顶部

数据集成框架

用于执行 ELT / ETL 的框架

  • Benthos - 跨多种协议的消息流桥接器。
  • CloudQuery - 具有可插拔架构的高性能 ELT 数据集成框架。
  • omniparser - 一个多功能的 ETL 库,能够以流式方式解析文本输入(CSV/txt/JSON/XML/EDI/X12/EDIFACT 等),并使用数据驱动的模式将数据转换为 JSON 输出。

⬆ 返回顶部

数据结构与算法

位打包与压缩

  • bingo - 快速、零分配、保留字典序的原生类型打包为字节数据。
  • binpacker - 二进制打包器和解包器,帮助用户构建自定义二进制流。
  • bit - Golang 集合数据结构,附带额外的位操作函数。
  • crunch - Go 实现的缓冲区包,可轻松处理各种数据类型。
  • go-ef - Elias-Fano 编码的 Go 实现。
  • roaring - 实现压缩位集的 Go 包。

位集

  • bitmap - Go 语言实现的密集、零分配、支持 SIMD 的位图/位集。
  • bitset - 实现位集的 Go 包。

布隆过滤器和布谷鸟过滤器

  • bloom - 实现布隆过滤器的 Go 包。
  • bloom - Go 语言实现的布隆过滤器。
  • bloom - Golang 布隆过滤器实现。
  • bloomfilter - 另一个用 Go 语言实现的 Bloomfilter,兼容 Java 的 Guava 库。
  • boomfilters - 用于处理连续、无界数据流的概率数据结构。
  • cuckoo-filter - Cuckoo 过滤器:一个功能全面的 Cuckoo 过滤器,与其他实现相比,它可配置且节省空间,并且具备原文中提到的所有功能。
  • cuckoofilter - Cuckoo 过滤器:一个用 Go 语言实现的计数型布隆过滤器的良好替代方案。
  • ring - 一个用 Go 语言实现的高性能、线程安全的布隆过滤器。

数据结构和算法库

  • algorithms - 算法和数据结构。CLRS 学习。
  • go-datastructures - 实用、高性能且线程安全的数据结构库。
  • gods - Go 数据结构库。包括容器、集合、列表、堆栈、映射、双向映射、树、哈希集等。
  • gostl - Go 数据结构和算法库,旨在提供类似 C++ STL 的功能。

迭代器

  • goterator - 迭代器实现,提供 map 和 reduce 功能。
  • iter - Go 语言实现的 C++ STL 迭代器和算法。

Maps

另请参阅 Database 了解更复杂的键值存储,以及 Trees 了解其他有序 Map 的实现。

  • cmap - Go 语言线程安全的并发 Map,支持使用 interface{} 作为键并自动扩容分片。
  • dict - Go 语言类似 Python 的字典 (dict)。
  • go-shelve - Go 语言持久化、类似 Map 的对象。支持多个嵌入式键值存储。
  • goradd/maps - Go 1.18+ 通用 map 接口,支持 map、安全 map、有序 map、有序安全 map 等。

其他数据结构和算法

  • concurrent-writer - bufio.Writer 的高并发嵌入式替代品。
  • count-min-log - Go 实现 Count-Min-Log 的 sketch:使用近似计数器进行近似计数(类似 Count-Min sketch,但占用内存更少)。
  • fsm - 有限状态机包。
  • genfuncs - Go 1.18+ 泛型包,灵感来自 Kotlin 的 Sequence 和 Map。
  • go-generics - 通用的切片、映射、集合、迭代器和 Goroutine 实用程序。
  • go-geoindex - 内存地理索引。
  • go-rampart - 确定区间之间的关系。
  • go-rquad- 具有高效点定位和邻域查找功能的区域四叉树。
  • go-tuple - Go 1.18+ 版本的通用元组实现。
  • go18ds - 使用 Go 1.18 泛型的 Go 数据结构。
  • gofal - Go 的 fractional api。
  • gogu - 一个全面、可复用、高效的并发安全泛型实用函数和数据结构库。
  • gota - Go 数据帧、序列和数据整理方法的实现。
  • hide - ID 类型,支持哈希值编组,以防止将 ID 发送给客户端。
  • hyperloglog - HyperLogLog 实现,支持稀疏排序、LogLog-Beta 偏差校正和 TailCut 空间缩减。
  • quadtree - 通用、零分配、100% 测试覆盖的四叉树。
  • slices - 用于切片的纯通用函数。

可空类型

  • nan - 一个库中包含零分配可空结构,以及便捷的转换函数、编组器和解组器。
  • null - 可空的 Go 类型,可与 JSON 进行编组/解组。
  • typ - 空类型,安全的原始类型转换以及从复杂结构中获取值。

队列

  • deque - 高度优化的双端队列。
  • deque - 快速环形缓冲区双端队列(双端队列)。
  • dqueue - 简单、内存管理、零依赖、久经考验、线程安全的延迟队列。
  • goconcurrentqueue - 并发 FIFO 队列。
  • hatchet - 分布式容错任务队列。
  • memlog - 一个易于使用、轻量级、线程安全且仅支持追加操作的内存数据结构,灵感源自 Apache Kafka。
  • queue - 多个线程安全的通用 Go 队列实现。

集合

  • dsu - Go 语言中不相交集合数据结构的实现。
  • golang-set - Go 语言中线程安全和非线程安全的高性能集合。
  • goset - 一个实用的 Go 集合实现。
  • set - 使用 LinkedHashMap 在 Go 中实现的简单集合数据结构。

文本分析

  • bleve - 适用于 Go 语言的现代文本索引库。
  • go-adaptive-radix-tree - 自适应基数树 (Adaptive Radix Tree) 的 Go 实现。
  • go-edlib - Go 语言字符串比较和编辑距离算法库(Levenshtein、LCS、Hamming、Damerau levenshtein、Jaro-Winkler 等),兼容 Unicode。
  • levenshtein - Levenshtein 距离和相似度指标,可自定义编辑成本,并提供类似 Winkler 的公共前缀奖励。
  • levenshtein - Go 语言实现的 levenshtein 距离计算方法。
  • mspm - 用于信息检索的多字符串模式匹配算法。
  • parsefields - 用于解析类 JSON 日志的工具,用于收集唯一字段和事件。
  • ptrie - 前缀树的实现。
  • trie - Go 语言实现的 Trie 树。

  • hashsplit - 将字节流拆分成块,并将块排列成树,边界由内容而非位置决定。
  • merkle - 高效计算 Merkle 根哈希和包含证明。
  • skiplist - 非常快速的 Go 语言 Skiplist 实现。
  • skiplist - Go 语言的 Skiplist 实现。
  • treemap - 通用的键排序映射,底层使用红黑树。

管道

  • ordered-concurrently - Go 模块,可并发处理工作,并按输入顺序在通道中返回输出。
  • parapipe - FIFO 管道,在每个阶段并行执行,同时保持消息和结果的顺序。
  • pipeline - 一个支持扇入和扇出的管道实现。
  • pipelines - 用于并发处理的通用管道函数。

⬆ 返回顶部

数据库

缓存

具有过期记录的数据存储、内存分布式数据存储或基于文件数据库的内存子集。

  • 2q - 2Q 内存缓存实现。
  • bcache - 最终一致性分布式内存缓存 Go 库。
  • BigCache - 适用于 GB 级数据的高效键/值缓存。
  • cache - 内存中键值对缓存,支持过期时间,0 依赖,<100 行代码,100% 覆盖率。
  • cache2go - 内存中键值对缓存,支持基于超时自动失效。
  • cachego - 适用于多种驱动程序的 Golang 缓存组件。
  • clusteredBigCache - 支持集群和单个数据项过期的 BigCache。
  • coherence-go-client - 为 Go 应用程序完整实现 Oracle Coherence 缓存 API,使用 gRPC 作为网络传输方式。
  • couchcache - 基于 Couchbase 服务器的 RESTful 缓存微服务。
  • EchoVault - 可嵌入的分布式内存数据存储,兼容 Redis 客户端。
  • fastcache - 快速线程安全的内存缓存,适用于海量数据,并最大限度地降低 GC 开销。
  • GCache - 支持可过期缓存、LFU、LRU 和 ARC 的缓存库。
  • gdcache - 一个由 golang 实现的纯非侵入式缓存库,您可以使用它来实现您自己的分布式缓存。
  • go-cache - 一个灵活的多层 Go 缓存库,采用 Cache-Aside 模式处理内存和共享缓存。
  • go-freelru 一个无 GC、快速且通用的 LRU 哈希表库,具有可选的锁定、分片、逐出和过期功能。
  • go-gcache - GCache 的通用版本,支持可过期缓存、LFU、LRU 和 ARC 缓存。
  • go-mcache - 快速的内存键值存储/缓存库。支持指针缓存。
  • gocache - 一个完整的 Go 缓存库,支持多种存储方式(内存、memcache、redis 等),可链式缓存、可加载缓存、指标缓存等。
  • gocache - 一个无数据竞争、高性能且具有自动清除功能的 Go 缓存库
  • groupcache - Groupcache 是一个缓存和缓存填充库,旨在在许多情况下替代 memcached。
  • icache - 一个高性能、通用、线程安全、零依赖的缓存包。
  • imcache - 一个通用的内存缓存 Go 库。它支持过期、可变过期、最大条目限制、驱逐回调和分片。
  • nscache - 一个支持多种数据源驱动程序的 Go 缓存框架。
  • otter - 一个高性能的 Go 无锁缓存。比 Ristretto 及其同类产品快很多倍。
  • pocache - Pocache 是一个极简缓存包,专注于一种抢占式乐观缓存策略。
  • ristretto - 一款高性能、内存受限的 Go 缓存。
  • sturdyc - 一款具有高级并发功能的缓存库,旨在提升 I/O 密集型应用程序的健壮性和高性能。
  • theine - 高性能、接近最优的内存缓存,具有主动 TTL 过期功能和泛型。
  • timedmap - 带有过期键值对的映射。
  • ttlcache - 一个支持缓存项过期时间和泛型的内存缓存。
  • ttlcache - 一个支持每条记录TTL值的内存键值存储系统。

使用 Go 语言实现的数据库

  • badger - 使用 Go 语言实现的快速键值存储系统。
  • bbolt - 一个基于 Go 语言的嵌入式键值数据库。
  • Bitcask - Bitcask 是一个可嵌入、持久化且快速的键值 (KV) 数据库,采用纯 Go 语言编写,具有可预测的读写性能、低延迟和高吞吐量,这得益于 bitcask 的磁盘布局 (LSM+WAL)。
  • buntdb - 快速、可嵌入、基于 Go 语言的内存键值数据库,支持自定义索引和空间数据。
  • clover - 纯 Golang 编写的轻量级文档型 NoSQL 数据库。
  • cockroach - 可扩展、支持跨地域复制的事务型数据存储。
  • Coffer - 支持事务的简单 ACID 键值数据库。
  • column - 高性能、列式、可嵌入内存存储,支持位图索引和事务。
  • CovenantSQL - CovenantSQL 是一个基于区块链的 SQL 数据库。
  • Databunker - 符合 GDPR 和 CCPA 的个人身份信息 (PII) 存储服务。
  • dgraph - 可扩展、分布式、低延迟、高吞吐量的图形数据库。
  • DiceDB - 一款开源、快速、响应式的内存数据库,并针对现代硬件进行了优化。更高的吞吐量和更低的平均延迟,使其成为现代工作负载的理想选择。
  • diskv - 自主研发的基于磁盘的键值存储。
  • dolt - Dolt – 数据的 Git。
  • eliasdb - 无依赖关系、事务型图形数据库,提供 REST API、短语搜索和类 SQL 查询语言。
  • godis - 一个基于 Golang 实现的高性能 Redis 服务器及集群。
  • goleveldb - 用 Go 语言实现的 LevelDB 键值数据库。
  • hare - 一个简单的数据库管理系统,将每个表存储为以行分隔的 JSON 文本文件。
  • immudb - immudb 是一个轻量级、高速、不可变的数据库,适用于用 Go 编写的系统和应用程序。
  • influxdb - 可扩展的数据存储,用于指标、事件和实时分析。
  • ledisdb - Ledisdb 是一款基于 LevelDB 的高性能 NoSQL 数据库,类似 Redis。
  • levigo - Levigo 是 LevelDB 的 Go 语言包装器。
  • libradb - LibraDB 是一款简单的数据库,代码量不到 1000 行,方便学习。
  • LinDB - LinDB 是一款可扩展、高性能、高可用的分布式时间序列数据库。
  • lotusdb - 兼容 lsm 和 b+tree 的快速 k/v 数据库。
  • Milvus - Milvus 是一个用于嵌入管理、分析和搜索的向量数据库。
  • moss - Moss 是一个简单的 LSM 键值存储引擎100% 使用 Go 语言编写。
  • nutsdb - Nutsdb 是一个简单、快速、可嵌入、持久化的键值存储引擎,纯 Go 语言编写。它支持完全序列化事务以及列表、集合、有序集合等多种数据结构。
  • objectbox-go - 高性能嵌入式对象数据库 (NoSQL),支持 Go API。
  • pebble - 受 RocksDB/LevelDB 启发,使用 Go 语言编写的键值数据库。
  • piladb - 基于堆栈数据结构的轻量级 RESTful 数据库引擎。
  • pogreb - 适用于读取密集型工作负载的嵌入式键值存储。
  • prometheus - 监控系统和时间序列数据库。
  • pudge - 使用 Go 标准库编写的快速简便的键/值存储系统。
  • redka - 使用 SQLite 重新实现的 Redis。
  • rosedb - 基于 LSM+WAL 的嵌入式键值对数据库,支持字符串、列表、哈希、集合和顺序集合。
  • rotom - 使用 Golang 构建的微型 Redis 服务器,兼容 RESP 协议。
  • rqlite - 基于 SQLite 构建的轻量级分布式关系型数据库。
  • tempdb - 用于临时数据的键值存储。
  • tidb - TiDB 是一个分布式 SQL 数据库,其设计灵感源自 Google F1。
  • tiedot - 基于 Golang 的 NoSQL 数据库。
  • unitdb - 适用于物联网和实时消息传递应用的快速时间序列数据库。使用 github.com/unit-io/unitd 应用程序,通过 TCP 或 WebSocket 协议使用 PubSub 访问 unitdb。
  • Vasto - 一个分布式高性能键值存储系统。基于磁盘。最终一致性。高可用性。能够在不中断服务的情况下扩展或缩减空间。
    VictoriaMetrics - 快速、资源高效且可扩展的开源时间序列数据库。可用作 Prometheus 的长期远程存储。支持 PromQL。

数据库模式迁移

  • atlas - 数据库工具包。一个旨在帮助企业更好地处理数据的命令行界面 (CLI)。
  • avro - 发现 SQL 模式并将其转换为 AVRO 模式。将 SQL 记录查询为 AVRO 字节。
  • bytebase - 为 DevOps 团队提供安全的数据库模式更改和版本控制。
  • darwin - Go 语言的数据库模式演化库。
  • dbmate - 轻量级、与框架无关的数据库迁移工具。
  • go-fixtures - 适用于 Golang 优秀内置数据库/SQL 库的 Django 风格 Fixture。
  • go-pg-migrate - 用于 go-pg 迁移管理的命令行友好型软件包。
  • go-pg-migrations - 一个 Go 语言软件包,可帮助您使用 go-pg/pg 编写迁移。
  • goavro - 一个 Go 语言软件包,用于对 Avro 数据进行编码和解码。
  • godfish - 数据库迁移管理器,支持原生查询语言。支持 Cassandra、MySQL、Postgres 和 SQLite3。
  • goose - 数据库迁移工具。您可以通过创建增量 SQL 或 Go 脚本来管理数据库的演进。
  • gorm-seeder - Gorm ORM 的简单数据库播种器。
  • gormigrate - Gorm ORM 的数据库模式迁移助手。
  • libschema - 在每个库中分别定义迁移。适用于开源库的迁移。MySQL 和 PostgreSQL。
  • migrate - 数据库迁移。CLI 和 Golang 库。
  • migrator - 极其简单的 Go 数据库迁移库。
  • migrator - MySQL 数据库迁移器,旨在通过直观的 Go 代码运行迁移到您的功能并管理数据库模式更新。
  • schema - 用于在 Go 二进制文件中嵌入兼容 database/sql 数据库的模式迁移的库。
  • skeema - 纯 SQL MySQL 模式管理系统,支持分片和外部在线模式更改工具。
  • soda - MySQL、PostgreSQL 和 SQLite 的数据库迁移、创建、ORM 等功能。
  • sql-migrate - 数据库迁移工具。允许使用 go-bindata 将迁移嵌入到应用程序中。
  • sqlize - 数据库迁移生成器。允许通过区分模型和现有 SQL 语句来生成 SQL 迁移。

数据库工具

  • chproxy - ClickHouse 数据库的 HTTP 代理。
  • clickhouse-bulk - 收集小插入数据并向 ClickHouse 服务器发送大请求。
  • database-gateway - 使用 ACL、日志和共享链接在生产环境中运行 SQL。
  • dbbench - 支持多种数据库和脚本的数据库基准测试工具。
  • dg - 快速数据生成器,可将生成的关系数据转换为 CSV 文件。
  • gatewayd - 用于构建数据驱动应用程序的云原生数据库网关和框架。类似于 API 网关,适用于数据库。
  • go-mysql - 用于处理 MySQL 协议和复制的 Go 工具集。
  • gorm-multitenancy - 为 GORM 托管数据库提供多租户支持。
  • hasql - 用于访问多主机 SQL 数据库安装的库。
  • octillery - 用于分片数据库的 Go 软件包(支持所有 ORM 或原始 SQL)。
  • onedump - 只需一个命令和配置即可将数据库从不同的驱动程序备份到不同的目标。
  • pg_timetable - PostgreSQL 的高级调度工具。
  • pgweb - 基于 Web 的 PostgreSQL 数据库浏览器。
  • prep - 无需修改代码,即可使用预编译的 SQL 语句。
  • pREST - 简化并加速开发,⚡ 在任何 Postgres 应用程序(无论是现有应用程序还是新应用程序)上都能实现即时、实时、高性能。
  • rdb - Redis RDB 文件解析器,用于二次开发和内存分析。
  • rwdb - rwdb 为多数据库服务器设置提供读取副本功能。
  • vitess - vitess 提供服务器和工具,方便扩展 MySQL 数据库,从而支持大规模 Web 服务。
  • wescale - WeScale 是一个数据库代理,旨在增强应用程序的可扩展性、性能、安全性和弹性。

SQL 查询构建器

用于构建和使用 SQL 的库。

  • bqb - 轻量级且易于学习的查询构建器。
  • buildsqlx - 适用于 PostgreSQL 的 Go 数据库查询构建器库。
  • builq - 使用 Go 轻松构建 SQL 查询。
  • dbq - Go 语言的零模板数据库操作。
  • Dotsql - Go 语言库,可帮助您将 SQL 文件集中保存并轻松使用。
  • gendry - 非侵入式 SQL 构建器和强大的数据绑定器。
  • godbal - Go 语言的数据库抽象层 (dbal)。支持 SQL 构建器并轻松获取结果。
  • goqu - 符合语言习惯的 SQL 构建器和查询库。
  • gosql - 更佳支持空值的 SQL 查询构建器。
  • Hotcoal - 保护您编写的 SQL 代码免遭注入攻击。
  • igor - PostgreSQL 的抽象层,支持高级功能并使用类似 Gorm 的语法。
  • jet - 用于使用 Go 编写类型安全 SQL 查询的框架,能够轻松地将数据库查询结果转换为所需的任意对象结构。
  • ormlite - 轻量级软件包,包含一些类似 ORM 的功能和 SQLite 数据库助手。
  • ozzo-dbx - 强大的数据检索方法以及与数据库无关的查询构建功能。
  • patcher - 强大的 SQL 查询构建器,可自动从结构体生成 SQL 查询。
  • qry - 使用原始 SQL 查询从文件生成常量的工具。
  • sg - 一个用 Go 编写的 SQL 生成器,用于生成标准 SQL(支持 CRUD)。
  • sq - 类型安全的 Go 语言 SQL 构建器和结构体映射器。
  • sqlc - 从 SQL 生成类型安全的代码。
  • sqlf - 快速 SQL 查询构建器。
  • sqlingo - 一款轻量级的 Go 语言 SQL 构建器。
  • sqrl - SQL 查询构建器,Squirrel 的 fork 版本,性能有所提升。
  • Squalus - Go SQL 包的轻量级层,使查询操作更加便捷。
  • Squirrel - 一款 Go 库,可帮助您构建 SQL 查询。
  • xo - 基于现有模式定义或自定义查询,生成符合 Go 语言规范的数据库代码,支持 PostgreSQL、MySQL、SQLite、Oracle 和 Microsoft SQL Server。

⬆ 返回顶部

数据库驱动程序

多后端接口

  • cayley - 支持多后端的图形数据库。
  • dsc - 支持 SQL、NoSQL 和结构化文件的数据存储连接。
  • dynamo - 一个简单的键值抽象,用于在 AWS 存储服务(AWS DynamoDB 和 AWS S3)中存储代数和链接数据类型。
  • go-transaction-manager - 具有多个适配器(sql、sqlx、gorm、mongo 等)的事务管理器,用于控制事务边界。
  • gokv - Go 语言的简单键值存储抽象和实现(Redis、Consul、etcd、bbolt、BadgerDB、LevelDB、Memcached、DynamoDB、S3、PostgreSQL、MongoDB、CockroachDB 等等)。

关系数据库驱动程序

  • avatica - 用于数据库/sql 的 Apache Avatica/Phoenix SQL 驱动程序。
  • bgc - Go 语言的 BigQuery 数据存储连接。
  • firebirdsql - Go 语言的 Firebird 关系数据库管理系统 SQL 驱动程序。
  • go-adodb - 适用于 Go 语言的 Microsoft ActiveX 对象数据库驱动程序,使用 database/sql。
  • go-mssqldb - 适用于 Go 语言的 Microsoft MSSQL 驱动程序。
  • go-oci8 - 适用于 Go 语言的 Oracle 驱动程序,使用 database/sql。
  • go-rqlite - rqlite 的 Go 客户端,提供易于使用的抽象层,方便使用 rqlite API。
  • go-sql-driver/mysql - 适用于 Go 语言的 MySQL 驱动程序。
  • go-sqlite3 - 使用 database/sql 的 Go 语言 SQLite3 驱动程序。
  • go-sqlite3 - 此 Go 模块与 database/sql 驱动程序兼容。它允许将 SQLite 嵌入到您的应用程序中,提供对其 C API 的直接访问,支持 SQLite VFS,并包含一个 GORM 驱动程序。
  • godror - 使用 ODPI-C 驱动程序的 Oracle Go 语言驱动程序。
  • gofreetds - Microsoft MSSQL 驱动程序。基于 FreeTDS 的 Go 包装器。
  • KSQL - 一个简单而强大的 Golang SQL 库
  • pgx - PostgreSQL 驱动程序支持的功能超出了 database/sql 所公开的功能。
  • pig - 简单的 pgx 包装器,可轻松执行和 扫描 查询结果。
  • pq - 纯 Go 语言编写的 Postgres database/sql 驱动程序。
  • Sqinn-Go - 纯 Go 语言编写的 SQLite。
  • sqlhooks - 将 hooks 附加到任何 database/sql 驱动程序。
  • sqlite - sqlite 软件包是一个 SQL/数据库驱动程序,使用了 C 语言 SQLite3 库的 CGo 移植版本。
  • surrealdb.go - Go 语言的 SurrealDB 驱动程序。
  • ydb-go-sdk - 原生数据库/SQL 驱动程序 YDB(Yandex 数据库)

NoSQL 数据库驱动程序

  • aerospike-client-go - 基于 Go 语言的 Aerospike 客户端。
  • arangolite - 轻量级 Go 语言 ArangoDB 驱动程序。
  • asc - Go 语言 Aerospike 数据存储连接。
  • forestdb - ForestDB 的 Go 绑定。
  • go-couchbase - Go 语言 Couchbase 客户端。
  • go-mongox - 基于官方驱动的 Go Mongo 库,具有简化的文档操作、结构体与集合的通用绑定、内置 CRUD、聚合、自动字段更新、结构体验证、钩子函数以及基于插件的编程功能。
  • go-pilosa - Pilosa 的 Go 客户端库。
  • go-rejson - 使用 Redigo golang 客户端,为 redislabs 的 ReJSON 模块提供 Golang 客户端。轻松在 Redis 中将结构体作为 JSON 对象进行存储和操作。
  • gocb - Couchbase 官方 Go SDK。
  • gocosmos - 用于 Azure Cosmos DB 的 REST 客户端和标准 database/sql 驱动程序。
  • gocql - 用于 Apache Cassandra 的 Go 语言驱动程序。
  • godis - 使用 golang 实现的 redis 客户端,灵感来自 jedis。
  • godscache - Google Cloud Platform Go Datastore 软件包的包装器,使用 memcached 添加了缓存功能。
  • gomemcache - 用于 Go 编程语言的 memcache 客户端库。
  • gomemcached - 一个基于 Go 语言的 Memcached 二进制客户端,支持使用一致性哈希和 SASL 进行分片。
  • gorethink - RethinkDB 的 Go 语言驱动程序。
  • goriak - Riak KV 的 Go 语言驱动程序。
  • Kivik - Kivik 为 CouchDB、PouchDB 和类似数据库提供通用的 Go 和 GopherJS 客户端库。
  • mgm - 基于 MongoDB 模型的 Go 版 ODM(基于官方 MongoDB 驱动程序)。
  • mgo - (未维护) 基于 Go 语言的 MongoDB 驱动程序,它遵循 Go 语言标准语法,通过极其简单的 API 实现了丰富且经过充分测试的功能。
  • mongo-go-driver - 基于 Go 语言的官方 MongoDB 驱动程序。
  • neo4j - Neo4j 的 Golang Rest API 绑定。
  • neoism - 基于 Go 语言的 Neo4j 客户端。
  • qmgo - 基于 Go 语言的 MongoDB 驱动程序。它基于官方 MongoDB 驱动程序,但像 Mgo 一样更易于使用。
  • redeo - 兼容 Redis 协议的 TCP 服务器/服务。
  • redigo - Redigo 是 Redis 数据库的 Go 客户端。
  • redis - Go 语言的 Redis 客户端。
  • rueidis - 快速的 Redis RESP3 客户端,支持自动流水线操作和服务器辅助的客户端缓存。
  • xredis - 类型安全、可定制、简洁易用的 Redis 客户端。

搜索和分析数据库

  • clickhouse-go - 兼容 database/sql 的 ClickHouse SQL 客户端。
  • effdsl - 适用于 Go 语言的 Elasticsearch 查询生成器。
  • elastic - 适用于 Go 语言的 Elasticsearch 客户端。
  • elasticsql - 使用 Go 语言将 SQL 语句转换为 Elasticsearch DSL。
  • elastigo - Elasticsearch 客户端库。
  • go-elasticsearch - 适用于 Go 语言的 Elasticsearch 官方客户端。
  • goes - 与 Elasticsearch 交互的库。
  • skizze - 概率数据结构服务和存储。
  • zoekt - 基于三元组的快速代码搜索。

⬆ 返回顶部

日期和时间

用于处理日期和时间的库。

  • approx - 一个 Duration 扩展,支持解析/打印以天、周和年为单位的持续时间。
  • carbon - 一个简单、语义化且开发者友好的 Golang 时间包。
  • carbon - 一个简单的 Time 扩展,包含大量实用方法,移植自 PHP Carbon 库。
  • cronrange - 解析 Cron 风格的时间范围表达式,检查给定的时间是否在任何范围内。
  • date - 增强 Time 功能,用于处理日期和日期范围、时间跨度、周期和时间。
  • dateparse - 无需事先知道格式即可解析日期。
  • durafmt - Go 的时间长度格式化库。
  • feiertage - 一组用于计算德国公共假日的函数,包括针对德国联邦州(Bundesländer)的专用函数。例如复活节、五旬节、感恩节……
  • go-anytime - 无需事先知道格式即可解析日期/时间,例如“下一个 12 月 22 日下午 3 点”以及范围,例如“从今天到下周四”。
  • go-datebin - 一个简单的日期时间解析包。
  • go-persian-calendar - 波斯历(太阳回历)的 Go 实现(golang 语言)。
  • go-str2duration - 将字符串转换为时长。支持 time.Duration 返回字符串等功能。
  • go-sunrise - 计算给定位置的日出日落时间。
  • go-week - 一个高效的 ISO8601 星期日期解析包。
  • gostradamus - 一个用于处理日期的 Go 包。
  • iso8601 - 高效解析 ISO8601 日期时间,无需正则表达式。
  • kair - Golang 日期和时间格式化库。
  • now - Now 是一个 Golang 时间工具包。
  • strftime - 兼容 C99 的 strftime 格式化程序。
  • timespan - 用于与时间间隔交互,时间间隔定义为开始时间和持续时间。
  • timeutil - Golang time 包的实用扩展(Timedelta、Strftime 等)。
  • tuesday - 与 Ruby 兼容的 Strftime 函数。

⬆ 返回顶部

分布式系统

有助于构建分布式系统的包。

  • arpc - 更高效的网络通信,支持双向调用、通知和广播。
  • bedrock - 为使用 Go 快速开发服务和更多用例相关的框架提供极简、模块化且可组合的基础。
  • capillaries - 分布式批量数据处理框架。
  • celeriac - 用于使用 Go 语言添加 Celery 工作线程、任务和事件交互和监控支持的库。
  • committer - 分布式事务管理系统(2PC/3PC 实现)。
  • consistent - 具有有限负载的一致性哈希算法。
  • consistenthash - 具有可配置副本的一致性哈希算法。
  • dht - BitTorrent Kademlia DHT 实现。
  • digota - grpc 电商微服务。
  • dot - 使用操作转换/OT实现分布式同步。
  • doublejump - 谷歌改进的跳跃一致性哈希。
  • dragonboat - 功能齐全、性能卓越的Go语言多组Raft库。
  • Dragonfly - 基于P2P技术,提供高效、稳定、安全的文件分发和镜像加速,是云原生架构的最佳实践和标准解决方案。
  • drmaa - 基于DRMAA标准的集群调度器作业提交库。
  • dynamolock - 基于DynamoDB的分布式锁实现。
  • dynatomic - 一个使用 DynamoDB 作为原子计数器的库。
  • emitter-io - 基于 MQTT、Websockets 和 love 构建的高性能、分布式、安全、低延迟的发布-订阅平台。
  • evans - Evans:更具表现力的通用 gRPC 客户端。
  • failured - 适用于分布式系统的自适应累积故障检测器。
  • flowgraph - 基于流的编程包。
  • gleam - 一个用纯 Go 和 Luajit 编写的快速、可扩展的分布式 Map/Reduce 系统,结合了 Go 的高并发性和 Luajit 的高性能,可以独立运行或分布式运行。
  • glow - 易于使用、可扩展的分布式大数据处理,包括 Map-Reduce 和 DAG 执行,全部用纯 Go 编写。
  • gmsec - 一个 Go 分布式系统开发框架。
  • go-doudou - 一个基于 Gossip 协议和 OpenAPI 3.0 规范的去中心化微服务框架。内置 go-doudou 命令行界面,专注于低代码和快速开发,可提升您的工作效率。
  • go-eagle - 一个用于 API 或微服务的 Go 框架,包含便捷的脚手架工具。
  • go-health - 用于在您的服务中启用异步依赖项健康检查的库。
  • go-jump - Google Jump 一致性哈希函数的移植。
  • go-kit - 微服务工具包,支持服务发现、负载均衡、可插拔传输、请求跟踪等功能。
  • go-micro - 分布式系统开发框架。
  • go-mysql-lock - 基于 MySQL 的分布式锁。
  • go-pdu - 基于身份的去中心化社交网络。
  • go-sundheit - 一个用于为 Go 语言服务定义异步服务健康检查的库。
  • go-zero - 一个 Web 和 RPC 框架。它旨在通过弹性设计确保繁忙网站的稳定性。内置 goctl 极大提升开发效率。
  • gorpc - 简单、快速、可扩展的高负载 RPC 库。
  • grpc-go - gRPC 的 Go 语言实现,基于 HTTP/2 协议。
  • hprose - 非常新颖的 RPC 库,目前支持 25 种以上语言。
  • jsonrpc - jsonrpc 包有助于 JSON-RPC 2.0 的实现。
  • jsonrpc - JSON-RPC 2.0 HTTP 客户端实现。
  • K8gb - 云原生 Kubernetes 全局均衡器。
  • Kitex - 一款高性能、高扩展性的 Golang RPC 框架,可帮助开发者构建微服务。如果您在开发微服务时主要关注性能和可扩展性,Kitex 是一个不错的选择。
  • Kratos - 一款采用 Go 语言编写的模块化设计且易于使用的微服务框架。
  • liftbridge - 轻量级、容错的 NATS 消息流框架。
  • lura - 一款高性能、集成中间件的 API 网关框架。
  • micro - 一款适用于云端及其他平台的分布式系统运行时。
  • mochi mqtt - 完全符合规范,可嵌入高性能 MQTT v5/v3 代理,适用于物联网、智能家居和发布订阅。
  • NATS - NATS 是一个简单、安全且高性能的通信系统,适用于数字系统、服务和设备。
  • opentelemetry-go-auto-instrumentation - 适用于 Golang 的 OpenTelemetry 编译时检测工具。
  • outbox - Go 语言中用于事务性发件箱模式的轻量级库,不绑定任何特定的关系数据库或代理。
  • outboxer - Outboxer 是一个实现了 outbox 模式的 Go 库。
  • pglock - 基于 PostgreSQL 的分布式锁实现。
  • pjrpc - 符合 Protobuf 规范的 Golang JSON-RPC 服务器/客户端。
  • raft - HashiCorp 开发的 Raft 共识协议的 Golang 实现。
  • raft - CoreOS 开发的 Raft 共识协议的 Go 实现。
  • rain - BitTorrent 客户端及库。
  • redis-lock - 使用 Redis 实现的简化分布式锁。
  • resgate - 用于构建 REST、实时和 RPC API 的实时 API 网关,所有客户端均可无缝同步。
  • ringpop-go - 适用于 Go 应用程序的可扩展、容错的应用层分片。
  • rpcx - 类似阿里巴巴 Dubbo 的分布式可插拔 RPC 服务框架。
  • Semaphore - 一款简单易用的微服务编排器。
  • sleuth - 用于无主控 P2P 自动发现和 HTTP 服务之间 RPC 的库(使用 ZeroMQ)。
  • sponge - 一个集成了自动代码生成、gin 和 grpc 框架以及基础开发框架的分布式开发框架。
  • Tarmac - w 框架使用 WebAssembly 编写函数、微服务或单体应用
  • Temporal - 持久执行系统,可使代码容错且简洁。
  • torrent - BitTorrent 客户端包。
  • trpc-go - tRPC 的 Go 语言实现,它是一个可插拔的高性能 RPC 框架。

⬆ 返回顶部

动态 DNS

用于更新动态 DNS 记录的工具。

  • DDNS - 个人 DDNS 客户端,以 Digital Ocean Networking DNS 作为后端。
  • dyndns - 后台 Go 进程,用于定期自动检查您的 IP 地址,并在您的 IP 地址发生变化时更新 Google 域名的(一个或多个)动态 DNS 记录。
  • GoDNS - 一款动态 DNS 客户端工具,支持 DNSPod 和 HE.net,使用 Go 编写。

⬆ 返回顶部

关于项目

精选的 Go 框架、库和软件列表。
MIT
Golang
154,351
12637
2826
2014-07-06
2025-10-08

增长趋势 - stars