新手上路
昨天 22:48
主楼
演员模型
用于构建基于 Actor 的程序的库。- asyncmachine-go/pkg/machine- 图控制流库(AOP、actor、状态机)。
- Ergo- 一个基于 Actor 的框架,具有网络透明性,用于在 Golang 中创建事件驱动架构。灵感来自 Erlang。
- Goakt- 使用协议缓冲区作为消息的 Golang 快速分布式 Actor 框架。
- Hollywood- 用 Golang 编写的极速轻量级 Actor 引擎。
- ProtoActor- 适用于 Go、C# 和 Java/Kotlin 的分布式 Actor。
人工智能
用于构建利用人工智能的程序的库。- chromem-go- 一个用于 Go 的可嵌入式向量数据库,具有类似 Chroma 的接口,且不依赖任何第三方库。它运行在内存中,并可选持久化。
- fun- 在 Go 中使用大型语言模型 (LLM) 的最简单但强大的方法。
- langchaingo- LangChainGo 是一个用于开发由语言模型驱动的应用程序的框架。
- LocalAI- 开源 OpenAI 替代方案,自托管 AI 模型。
- Ollama- 在本地运行大型语言模型。
- OllamaFarm- 管理、负载均衡和故障转移 Ollama 包。
音频和音乐
用于处理音频的库。- beep- 一个简单的播放和音频处理库。
- flac- 原生 Go FLAC 编码器/解码器,支持 FLAC 流。
- gaad- 原生 Go AAC 比特流解析器。
- go-mpris- mpris dbus 接口的客户端。
- 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 令牌规范实现。
- casbin- 支持 ACL、RBAC 和 ABAC 等访问控制模型的授权库。
- cookiestxt- 提供 cookies.txt 文件格式的解析器。
- go-githubauth- GitHub 身份验证实用程序:生成和使用 GitHub 应用程序和安装令牌。
- go-guardian- Go-Guardian 是一个 golang 库,它提供了一种简单、清晰且符合惯例的方式来创建强大的现代 API 和 Web 身份验证,支持 LDAP、基本身份验证、Bearer 令牌身份验证和基于证书的身份验证。
- go-iam- 以开发者为先的身份和访问管理系统,具有简洁的用户界面。
- go-jose- 对 JOSE 工作组的 JSON Web Token、JSON Web Signatures 和 JSON Web Encryption 规范的相当完整的实现。
- go-jwt- JWT 身份验证包,提供具有指纹识别、Redis 存储和自动刷新功能的访问令牌和刷新令牌。
- goiabada- 一个支持 OAuth2 和 OpenID Connect 的开源身份验证和授权服务器。
- gologin- 用于使用 OAuth1 和 OAuth2 身份验证提供程序进行登录的链式处理程序。
- gorbac- 提供了一个轻量级的基于角色的访问控制 (RBAC) Golang 实现。
- gosession- 这是 Go 语言中用于 net/http 协议的快速会话管理包。它可能是目前最好的会话机制实现,或者至少它正努力成为最好的实现之一。
- goth- 提供了一种简单、清晰且符合惯例的方式来使用 OAuth 和 OAuth2。开箱即用,支持多种提供程序。
- jeff- 简单、灵活、安全且符合惯例的 Web 会话管理,具有可插拔的后端。
- jwt- 轻量级 JSON Web Token (JWT) 库。
- jwt- 安全、简单、快速的 Go 语言 JSON Web Tokens。
- 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- 具有可插拔后端(如 OAuth2 (Github)、htpasswd、osiam)的 JWT 登录微服务。
- oauth2- goauth2 的继任者。通用的 OAuth 2.0 包,支持 JWT、Google API、Compute Engine 和 App Engine。
- oidc- 易于使用的 OpenID Connect 客户端和服务器库,使用 Go 编写,并已获得 OpenID 基金会的认证。
- openfga- 基于“Zanzibar: Google's Consistent, Global Authorization System”论文实现的细粒度授权。由 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- 一个受 Zanzibar 启发的数据库,支持细粒度授权。
- 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 语言实现的 IPFS 库。它提供内容寻址存储,可用于 DApp 中的去中心化存储。它基于 IPFS 协议。
- lnd- Lightning Network 节点的完整实现。
- nview- Cardano 节点的本地监控工具。它是一个终端用户界面 (TUI),设计适配大多数屏幕。
- solana-go- 用于与 Solana JSON RPC 和 WebSocket 接口交互的 Go 库。
- tendermint- 高性能中间件,用于将用任何编程语言编写的状态机转换为使用 Tendermint 共识和区块链协议的拜占庭容错复制状态机。
机器人搭建
用于构建和使用机器人的库。- arikawa- Discord API 的库和框架。
- bot- 零依赖的 Telegram Bot 库,带有额外的 UI 组件。
- echotron- 一个优雅且并发的 Go 语言 Telegram Bots 库。
- 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 机器人:支持自定义命令、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- Modern Make。
- realize- 使用 Go 构建一个带有文件监视器和实时重载功能的系统。运行、构建并监视带有自定义路径的文件更改。
- Task- 简单的“Make”替代方案。
- taskctl- 并发任务运行器。
- xc- 带有 README.md 定义的任务的任务运行器,可执行的 markdown。
命令行
高级控制台用户界面
用于构建控制台应用程序和控制台用户界面的库。- asciigraph- Go 包,用于在命令行应用程序中创建轻量级 ASCII 折线图 ╭┈╯,无需其他依赖项。
- aurora- 支持 fmt.Printf/Sprintf 的 ANSI 终端颜色。
- box-cli-maker- 为您的 CLI 创建高度定制的 Boxes。
- bubble-table- 一个用于奶茶的交互式表格组件。
- bubbles- 用于珍珠奶茶的 TUI 组件。
- bubbletea- 基于 Elm 架构的 Go 框架,用于构建终端应用程序。
- crab-config-files-templating- Kubernetes 清单或通用配置文件的动态配置文件模板工具。
- ctc- 非侵入式跨平台终端颜色库不需要修改 Print 方法。
- fx- 终端 JSON 查看器和处理器。
- go-ataman- 用于在终端中渲染 ANSI 彩色文本模板的 Go 库。
- go-colorable- Windows 的可着色写入器。
- go-colortext- 用于在终端中输出颜色的 Go 库。
- go-isatty- golang 的 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 包,可轻松提供带有选项的终端旋转指示器。
- tabby- 一个用于创建极其简单的 Golang 表格的小型库。
- table- 用于终端颜色表格的小型库。
- termbox-go- Termbox 是一个用于创建跨平台文本界面的库。
- termdash- 基于 termbox-go 并受 termui 启发的 Go 终端仪表板。
- termenv- 为您的终端应用程序提供高级 ANSI 样式和颜色支持。
- termui- 基于 termbox-go 并受 blessed-contrib 启发的 Go 终端仪表板。
- uilive- 用于实时更新终端输出的库。
- uiprogress- 用于在终端应用程序中渲染进度条的灵活库。
- uitable- 用于提高终端应用程序中表格数据可读性的库。
- yacspin- Yet Another CLi Spinner package, for working with terminal spinners.
标准 CLI
用于构建标准或基本命令行应用程序的库。- acmd- Go 中简单、实用且有主见的 CLI 包。
- argparse- 受 Python 的 argparse 模块启发的命令行参数解析器。
- argv- 使用 bash 语法将命令行字符串拆分为参数数组的 Go 库。
- carapace- spf13/cobra 的命令参数补全生成器。
- carapace-bin- 多 shell 多命令参数补全器。
- carapace-spec- 使用 spec 文件定义简单的补全。
- climax- 具有“人性化”界面的替代 CLI,秉承 Go 命令的精神。
- clîr- 一个简单明了的命令行库。无依赖项。
- cmd- 扩展了标准的 flag 包,以惯用的方式支持子命令等。
- cmdr- 一个 POSIX/GNU 风格的、类似 getopt 的命令行 UI Go 库。
- 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- 一个强大且符合惯例的标志包,具有出色的子命令支持。
- flagvar- Go 标准 flag 包的标志参数类型集合。
- flash-flags- 超快、零依赖、符合 POSIX 标准的标志解析库,可用作插入式标准库替代品,并具有安全加固功能。
- getopt- 一个精确的 Go getopt,已针对 GNU libc 实现进行验证。
- go-arg- Go 中基于结构的参数解析。
- go-flags- go 命令行选项解析器。
- go-getoptions- 受 Perl 的 GetOpt::Long 的灵活性启发的 Go 选项解析器。
- go-readline-ny- 一个可自定义的行编辑库,支持 Emacs 快捷键、Unicode、代码补全和语法高亮。用于 NYAGOS shell。
- gocmd- 用于构建命令行应用程序的 Go 库。
- goopt- 一个基于结构标签的 Go 声明式 CLI 框架,具有广泛的功能集,例如分层命令/标志、i18n、shell 补全和验证。
- hashicorp/cli- 用于实现命令行界面的 Go 库。
- hiboot cli- 具有自动配置和依赖注入功能的 cli 应用程序框架。
- job- JOB,将您的短期命令设置为长期作业。
- kingpin- 支持子命令的命令行和标志解析器(已被 kong 取代;见下文)。
- liner- Go readline 类库,用于命令行界面。
- mcli- 一个极简但功能强大的 Go 命令行库。
- mkideal/cli- 基于 golang struct 标签的功能丰富且易于使用的命令行包。
- mow.cli- 用于构建具有复杂标志和参数解析及验证功能的 CLI 应用程序的 Go 库。
- ops- Unikernel Builder/Orchestrator。
- orpheus- 具有安全加固、插件存储系统和生产可观测性功能的 CLI 框架。
- pflag- Go 的 flag 包的替代品,实现了 POSIX/GNU 风格的 --flags。
- readline- 具有现代且易于使用的 UI 功能的 Shell 库。
- sflags- 基于结构的 flag 生成器,适用于 flag、urfave/cli、pflag、cobra、kingpin 和其他库。
- structcli- 消除 Cobra 样板代码:从 Go 结构体以声明方式构建功能强大、特性丰富的 CLI。
- strumt- 用于创建提示链的库。
- subcmd- 另一种解析和运行子命令的方法。可与标准的 flag 包配合使用。
- teris-io/cli- 用于在 Go 中构建命令行界面的简单而完整的 API。
- urfave/cli- 用于在 Go 中构建命令行应用程序的简单、快速且有趣的软件包(以前称为 codegangsta/cli)。
- 版本- 以多种格式收集和显示 CLI 版本信息以及升级通知。
- wlog- 支持跨平台颜色和并发的简单日志接口。
- wmenu- 易于使用的菜单结构,适用于提示用户做出选择的命令行应用程序。
配置
用于解析配置的库。- aconfig- 简单、实用且有主见的配置加载器。
- argus- 使用 MPSC 环形缓冲区、自适应批处理策略和通用格式解析(JSON、YAML、TOML、INI、HCL、Properties)进行文件监视和配置管理。
- azureappconfiguration- 用于从 Go 应用程序使用 Azure 应用配置中的数据的配置提供程序。
- bcl- BCL 是一种类似于 HCL 的配置语言。
- cleanenv- 极简配置读取器(来自文件、ENV 以及任何你想要的地方)。
- config- 云原生应用配置。只需两行代码即可将环境变量绑定到结构体。
- config- 使用文件、环境变量或标志,通过两行代码配置您的应用程序。
- 配置- 用于从环境变量、文件、标志和“default”标签初始化配置结构的库。
- configuro- 一个基于 ENV 和 Files 的、有主见的配置加载和验证框架,专注于符合 12 要素规范的应用程序。
- confiq- 用于 Go 的结构化数据格式配置结构解码器库 - 支持多种数据格式。
- confita- 将多个后端的配置级联加载到结构体中。
- conflate- 用于合并来自任意 URL 的多个 JSON/YAML/TOML 文件的库/工具,根据 JSON 模式进行验证,并应用模式中定义的默认值。
- enflag- 一个面向容器、零依赖的配置库,统一了环境变量和标志的解析。它使用泛型来保证类型安全,无需反射或结构体标签。
- env- 将环境变量解析为 Go 结构体(带默认值)。
- env- 一个用于将环境变量加载到结构体中的轻量级软件包。
- env- 一个支持将环境变量反序列化为结构体的环境实用程序包。
- envconfig- 从环境变量读取您的配置。
- envh- 用于管理环境变量的辅助工具。
- envyaml- 一个支持环境变量读取的 YAML 库。它允许将密钥作为环境变量,但以结构化的 YAML 格式加载配置。
- fig- 一个用于从文件和环境变量读取配置的小型库(带有验证和默认值)。
- genv- 使用 dotenv 支持轻松读取环境变量。
- go-array- 一个 Go 包,用于从 map、slice 或 json 读取或设置数据。
- go-aws-ssm- 从 AWS System Manager - Parameter Store 获取参数的 Go 包。
- go-cfg- 该库提供了一种统一的方法,可以从各种来源(例如 env、flags 和配置文件(.json、.yaml、.toml、.env))读取配置数据到结构中。
- go-conf- 一个基于注解结构体的应用程序配置简单库。它支持从环境变量、配置文件和命令行参数读取配置。
- go-config- 用于处理应用程序配置的简单便捷的库。
- go-ini- 一个 Go 包,用于序列化和反序列化 INI 文件。
- go-ssm-config- 用于从 AWS SSM(参数存储)加载配置参数的 Go 实用程序。
- go-up- 一个简单的配置库,具有递归占位符解析功能,没有任何魔法。
- GoCfg- 一个配置管理器,支持基于结构标签的契约、自定义值提供程序、解析器和文档生成。可定制且简单易用。
- godotenv- Ruby 的 dotenv 库的 Go 移植版(从 .env 加载环境变量)。
- GoLobby/Config- GoLobby Config 是一个轻量级但功能强大的 Go 编程语言配置管理器。
- gone/jconf- 模块化 JSON 配置。将配置结构体与其配置的代码一起保存,并将解析委托给子模块,同时又不牺牲完整的配置序列化。
- gonfig- 基于标签的配置解析器,可将来自不同提供程序的值加载到类型安全的结构体中。
- gookit/config- 应用程序配置管理(加载、获取、设置)。支持 JSON、YAML、TOML、INI、HCL。支持多文件加载和数据覆盖合并。
- harvester- Harvester,一个易于使用的静态和动态配置包,支持种子、环境变量和 Consul 集成。
- hedzr/store- 可扩展的高性能配置管理库,针对分层数据进行了优化。
- hjson- Human JSON,一种面向人类的配置文件格式。语法更宽松,错误更少,注释更多。
- hocon- 用于处理 HOCON(一种人类友好的 JSON 超集)格式的配置库,支持环境变量、引用其他值、注释和多个文件等功能。
- ini- 用于读取和写入 INI 文件的 Go 包。
- ini- INI 解析器和写入库,反序列化为结构体,序列化为 Json,写入文件,监视文件。
- kelseyhightower/envconfig- 用于管理环境变量配置数据的 Go 库。
- koanf- 一个轻量级、可扩展的库,用于在 Go 应用程序中读取配置。内置支持 JSON、TOML、YAML、env 和命令行。
- konf- 最简单的 API,用于从文件、环境、标志和云(例如 AWS、Azure、GCP)读取/监视配置。
- konfig- 为分布式处理时代提供可组合、可观察和高性能的 Go 配置处理。
- kong- 命令行解析器,支持任意复杂的命令行结构和其他配置源,例如 YAML、JSON、TOML 等(kingpin 的继任者)。
- nasermirzaei89/env- 用于读取环境变量的简单实用软件包。
- nfigure- 基于命令行(Posix 和 Go 风格)的库级结构标签配置;支持环境变量、JSON 和 YAML 格式
- onion- Go 的分层配置,支持 JSON、TOML、YAML、properties、etcd、env 和使用 PGP 进行加密。
- piper- Viper 封装器,支持配置继承和密钥生成。
- sonic- 一个速度极快的 JSON 序列化和反序列化库。
- 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,用于跟踪 pull 请求中的代码覆盖率,并提供漂亮的 HTML 预览,完全免费。
- go-fuzz-action- 在 GitHub Actions 中使用 Go 1.18 内置的模糊测试。
- go-semver-release- 自动化 Git 存储库的语义版本控制。
- go-test-coverage- 一个 GitHub Action,当测试覆盖率低于设定的阈值时,它会报告问题。
- gomason- 从干净的工作区测试、构建、签名和发布您的 Go 二进制文件。
- gotestfmt- 面向人类的 go 测试输出。
- goveralls- Coveralls.io 持续代码覆盖率跟踪系统的 Go 集成。
- muffet- Go 语言编写的快速网站链接检查器,请参阅替代方案。
- overalls- 用于像 goverals 这样的工具的多包 go 项目封面配置文件。
- roveralls- 递归覆盖率测试工具。
- woodpecker- Woodpecker 是 Drone CI 系统的社区分支。
CSS 预处理器
用于预处理 CSS 文件的库。- go-css- 一个非常简单的 CSS 解析器,用 Go 语言编写。
- 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 包。
位集
Bloom 和 Cuckoo 过滤器
- bloom- 实现布隆过滤器的 Go 包。
- bloom- 用 Go 实现的布隆过滤器。
- bloom- Golang Bloom 过滤器实现。
- bloomfilter- Go 中另一个 Bloomfilter 实现,与 Java 的 Guava 库兼容。
- boomfilters- 用于处理连续、无界流的概率数据结构。
- cuckoo-filter- 布谷鸟过滤器:一个全面的布谷鸟过滤器,与其他实现相比,它是可配置的,并且空间优化,并且提供了原始论文中提到的所有功能。
- cuckoofilter- Cuckoo filter: 一个用 Go 实现的计数布隆过滤器的良好替代方案。
- ring- Go 实现的高性能、线程安全的布隆过滤器。
数据结构与算法集合
- 算法- 算法和数据结构。CLRS 研究。
- go-datastructures- 一系列有用、高性能且线程安全的数据结构。
- gods- Go 数据结构。容器、集合、列表、栈、映射、双向映射、树、哈希集等。
- gostl- Go 的数据结构和算法库,旨在提供类似于 C++ STL 的功能。
迭代器
- gloop- 使用 Go 的 range-over-func 特性实现便捷的循环。
- goterator- 迭代器实现,提供 map 和 reduce 功能。
- iter- C++ STL 迭代器和算法的 Go 实现。
地图
另请参阅数据库以了解更复杂的键值存储,以及树以了解更复杂的树。额外的有序映射实现。
- cmap- 一个用于 Go 的线程安全并发映射,支持使用 interface{} 作为键,并支持自动扩展分片。
- concurrent-swiss-map- 一个高性能、线程安全的通用并发哈希映射实现,使用 Swiss Map。
- dict- Go 的类似 Python 的字典 (dict)。
- go-shelve- 一个用于 Go 编程语言的持久化、类似地图的对象。支持多个嵌入式键值存储。
- goradd/maps- Go 1.18+ 通用地图接口,支持地图、安全地图、有序地图、有序安全地图等。
- hmap- HMap 是一个并发且安全的通用支持 Map 实现,旨在提供易于使用的 API。
其他数据结构和算法
- concurrent-writer- 高度并发的 bufio.Writer 替代品。
- count-min-log- Go 实现 Count-Min-Log sketch:使用近似计数器进行近似计数(类似于 Count-Min sketch,但使用更少的内存)。
- fsm- 有限状态机包。
- genfuncs- 受 Kotlin 的 Sequence 和 Map 启发的 Go 1.18+ 泛型包。
- go-generics- 通用的 slice、map、set、iterator 和 goroutine 工具。
- go-geoindex- 内存地理索引。
- go-rampart- 确定区间之间的关系。
- go-rquad- 具有高效点定位和邻居查找的区域四叉树。
- go-tuple- Go 1.18+ 的通用元组实现。
- go18ds- 使用 Go 1.18 泛型的 Go 数据结构。
- gofal- Go 的小数 api。
- gogu- 一个全面、可重用且高效的并发安全泛型实用函数和数据结构库。
- gota- Go 的数据帧、序列和数据整理方法的实现。
- hide- ID 类型,带有哈希到/来自哈希的序列化,以防止将 ID 发送给客户端。
- hyperloglog- HyperLogLog 实现,具有稀疏性、LogLog-Beta 偏差校正和 TailCut 空间缩减。
- quadtree- 通用、零分配、100% 测试覆盖的四叉树。
- slices- 纯粹的、通用的切片函数。
可空类型
- nan- 零分配 一个库中包含可空结构,以及方便的转换函数、编组器和反编组器。
- null- 可与 JSON 进行序列化/反序列化的可空 Go 类型。
- typ- 空类型、安全原始类型转换以及从复杂结构中获取值。
队列
- deque- 一个高度优化的双端队列。
- deque- 快速环形缓冲双端队列(双端队列)。
- dqueue- 简单、内存中、零依赖、经过实战检验的线程安全延迟队列。
- goconcurrentqueue- 并发 FIFO 队列。
- hatchet- 分布式、容错任务队列。
- list- 一个通用的、线程安全的双向链表,具有完整的迭代器支持和用于嵌入式使用的侵入式单链表;一个功能丰富的 container/list 替代品。
- memlog- 一个易于使用、轻量级、线程安全且仅追加的内存数据结构,其灵感来源于 Apache Kafka。
- queue- 为 Go 提供多个线程安全、通用的队列实现。
套
- dsu- Go 中不相交集合数据结构的实现。
- golang-set- 为 Go 提供线程安全和非线程安全的高性能集合。
- goset- 一个有用的 Go 语言集合实现。
- set- 使用 LinkedHashMap 在 Go 中实现的简单集合数据结构。
文本分析
- bleve- 用于 Go 的现代文本索引库。
- go-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 实现。
树木
- graphlib- 拓扑排序库,DAG 图的排序和剪枝。
- hashsplit- 将字节流分割成块,并将块排列成树,边界由内容决定,而不是位置决定。
- merkle- 高效计算 Merkle 根哈希和包含证明。
- skiplist- 非常快速的 Go Skiplist 实现。
- skiplist- Go 中的 Skiplist 实现。
- treemap- 通用键排序映射,底层使用红黑树。
管道
- ordered-concurrently- 一个 Go 模块,可以并发处理工作,并按输入顺序在通道中返回输出。
- parapipe- FIFO 管道,可在每个阶段并行执行,同时保持消息和结果的顺序。
- pipeline- 具有扇入和扇出的流水线实现。
- pipelines- 用于并发处理的通用管道函数。
数据库
缓存
_包含过期记录的数据存储、内存分布式数据存储或基于文件的数据库的内存子集。_- bcache- 最终一致的分布式内存缓存 Go 库。
- BigCache- 高效的键/值缓存,适用于 GB 级数据。
- cache2go- 内存键值缓存,支持基于超时自动失效。
- cachego- 用于多个驱动程序的 Golang 缓存组件。
- clusteredBigCache- 支持集群和单个项目过期的 BigCache。
- coherence-go-client- 使用 gRPC 作为网络传输的 Go 应用程序的 Oracle Coherence 缓存 API 的完整实现。
- couchcache- 由 Couchbase 服务器支持的 RESTful 缓存微服务。
- EchoVault- 可嵌入的分布式内存数据存储,与 Redis 客户端兼容。
- fastcache- 适用于大量条目的快速线程安全内存缓存。最大限度减少垃圾回收开销。
- GCache- 支持过期缓存、LFU、LRU 和 ARC 的缓存库。
- gdcache- 一个用 golang 实现的纯粹的非侵入式缓存库,你可以使用它来实现你自己的分布式缓存。
- go-cache- 一个灵活的多层 Go 缓存库,通过采用 Cache-Aside 模式来处理内存缓存和共享缓存。
- go-freelru一个无垃圾回收、快速且通用的 LRU 哈希映射库,具有可选的锁定、分片、驱逐和过期功能。
- go-gcache- GCache 的通用版本,支持过期缓存、LFU、LRU 和 ARC。
- go-mcache- 快速的内存键值存储/缓存库。指针缓存。
- gocache- 一个完整的 Go 缓存库,支持多种存储方式(内存、memcache、redis 等),可链式调用、可加载、指标缓存等。
- gocache- 一个高性能、无数据竞争且具备自动清理功能的 Go 缓存库
- groupcache- Groupcache 是一个缓存和缓存填充库,旨在在许多情况下替代 memcached。
- icache- 一个高性能、通用、线程安全、零依赖的缓存包。
- imcache- 一个通用的内存缓存 Go 库。它支持过期、滑动过期、最大条目限制、驱逐回调和分片。
- jetcache-go- 支持多级缓存的统一 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。
- Milvus- Milvus 是一个用于嵌入管理、分析和搜索的矢量数据库。
- moss- Moss 是一个简单的 LSM 键值存储引擎,完全用 Go 编写。
- NoKV- 基于 LSM 树的高性能分布式 KV 存储。
- nutsdb- Nutsdb 是一个简单、快速、可嵌入、持久化的键值存储系统,完全用 Go 语言编写。它支持完全可序列化的事务以及多种数据结构,例如列表、集合、有序集合等。
- objectbox-go- 高性能嵌入式对象数据库 (NoSQL),支持 Go API。
- pebble- 受 RocksDB/LevelDB 启发的 Go 语言键值数据库。
- piladb- 基于栈数据结构的轻量级 RESTful 数据库引擎。
- pogreb- 用于读取密集型工作负载的嵌入式键值存储。
- prometheus- 监控系统和时间序列数据库。
- pudge- 使用 Go 标准库编写的快速简单的键/值存储。
- redka- 使用 SQLite 重新实现的 Redis。
- rosedb- 一个基于 LSM+WAL 的嵌入式 kv 数据库,支持字符串、列表、哈希、集合、zset。
- rotom- 一个用 Golang 构建的小型 Redis 服务器,兼容 RESP 协议。
- rqlite- 基于 SQLite 构建的轻量级、分布式关系数据库。
- tempdb- 用于存储临时项的键值存储。
- tidb- TiDB 是一个分布式 SQL 数据库。其设计灵感来源于 Google F1 系统。
- tiedot- 您的基于 Golang 的 NoSQL 数据库。
- unitdb- 用于物联网和实时消息传递应用的快速时间序列数据库。使用 github.com/unit-io/unitd 应用程序,通过 TCP 或 WebSocket 的发布/订阅功能访问 unitdb。
- Vasto- 一个分布式高性能键值存储系统。基于磁盘。最终一致性。高可用性。能够无中断地扩展或缩减容量。
- VictoriaMetrics- 快速、资源高效且可扩展的开源时间序列数据库。可用作 Prometheus 的长期远程存储。支持 PromQL。
数据库模式迁移
- atlas- 一个数据库工具包。一个旨在帮助公司更好地处理数据的命令行界面。
- avro- 发现 SQL 模式并将其转换为 AVRO 模式。将 SQL 记录查询为 AVRO 字节。
- bytebase- 为 DevOps 团队提供安全的数据库模式更改和版本控制。
- darwin- Go 的数据库模式演化库。
- dbmate- 一个轻量级的、与框架无关的数据库迁移工具。
- go-fixtures- 为 Golang 优秀的内置数据库/SQL 库提供的 Django 风格的 fixtures。
- go-pg-migrate- 用于 go-pg 迁移管理的 CLI 友好型软件包。
- go-pg-migrations- 一个 Go 包,用于帮助使用 go-pg/pg 编写迁移。
- goavro- 一个用于编码和解码 Avro 数据的 Go 包。
- godfish- 数据库迁移管理器,支持原生查询语言。支持 Cassandra、MySQL、PostgreSQL 和 SQLite3。
- goose- 数据库迁移工具。您可以通过创建增量 SQL 或 Go 脚本来管理数据库的演进。
- gorm-seeder- Gorm ORM 的简单数据库填充器。
- gormigrate- Gorm ORM 的数据库模式迁移助手。
- libschema- 在每个库中分别定义迁移。适用于开源库的迁移。支持 MySQL 和 PostgreSQL。
- migrate- 数据库迁移。CLI 和 Golang 库。
- migrator- 非常简单的 Go 数据库迁移库。
- migrator- MySQL 数据库迁移器,旨在运行迁移以迁移您的功能并使用直观的 Go 代码管理数据库架构更新。
- schema- 用于将数据库/sql 兼容数据库的模式迁移嵌入到 Go 二进制文件中的库。
- skeema- 适用于 MySQL 的纯 SQL 模式管理系统,支持分片和外部在线模式更改工具。
- soda- MySQL、PostgreSQL 和 SQLite 的数据库迁移、创建、ORM 等。
- sql-migrate- 数据库迁移工具。允许使用 go-bindata 将迁移嵌入到应用程序中。
- sqlize- 数据库迁移生成器。允许通过比较模型和现有 SQL 来生成 SQL 迁移。
数据库工具
- chproxy- ClickHouse 数据库的 HTTP 代理。
- clickhouse-bulk- 收集小的插入数据并向 ClickHouse 服务器发送大的请求。
- database-gateway- 在生产环境中运行 SQL,支持 ACL、日志和共享链接。
- 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 提供服务器和工具,方便大规模 Web 服务扩展 MySQL 数据库。
- 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 查询的框架,能够轻松地将数据库查询结果转换为所需的任意对象结构。
- obreron- 快速且廉价的 SQL 构建器,它只做一件事:构建 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 的轻量级 DSL。
- sqrl- SQL 查询构建器,是 Squirrel 的一个分支,性能有所提升。
- Squalus- Go SQL 包上的一个轻量级层,使执行查询更加容易。
- Squirrel- 一个帮助你构建 SQL 查询的 Go 库。
- 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 RDBMS SQL 驱动程序。
- go-adodb- 使用 database/sql 的 Microsoft ActiveX 对象数据库驱动程序,适用于 Go。
- go-mssqldb- 用于 Go 的 Microsoft MSSQL 驱动程序。
- go-oci8- 使用 database/sql 的 Go Oracle 驱动程序。
- 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 驱动程序的 Go Oracle 驱动程序。
- gofreetds- Microsoft MSSQL 驱动程序。对 FreeTDS 进行包装。
- KSQL- 一个简单而强大的 Golang SQL 库。
- pgx- PostgreSQL 驱动程序,支持数据库/sql 公开的功能之外的功能。
- pig- 简单的 pgx 包装器,可轻松执行和 scan 查询结果。
- pq- 纯 Go Postgres 数据库/sql 驱动程序。
- Sqinn-Go- 使用纯 Go 实现的 SQLite。
- sqlhooks- 将钩子附加到任何数据库/SQL驱动程序。
- sqlite- sqlite 软件包是一个 sql/数据库驱动程序,它使用 C SQLite3 库的 CGo-free 移植版。
- surrealdb.go- SurrealDB Go 驱动程序。
- ydb-go-sdk- YDB(Yandex 数据库)原生数据库/SQL 驱动程序。
NoSQL 数据库驱动程序
- aerospike-client-go- Go 语言的 Aerospike 客户端。
- arangolite- ArangoDB 的轻量级 golang 驱动程序。
- asc- 用于 Go 语言 Aerospike 的数据存储连接。
- forestdb- ForestDB 的 Go 绑定。
- go-couchbase- Go 中的 Couchbase 客户端。
- go-mongox- 一个基于官方驱动程序的 Go Mongo 库,具有简化的文档操作、结构体到集合的通用绑定、内置 CRUD、聚合、自动字段更新、结构体验证、钩子和基于插件的编程等功能。
- go-pilosa- Pilosa 的 Go 客户端库。
- go-rejson- 使用 Redigo Go 客户端为 redislabs 的 ReJSON 模块开发的 Go 客户端。可以轻松地在 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 驱动程序的 MongoDB 模型 ODM(适用于 Go)。
- mgo- (已停止维护)用于 Go 语言的 MongoDB 驱动程序,它遵循标准的 Go 惯用法,在非常简单的 API 下实现了丰富且经过充分测试的功能。
- mongo-go-driver- Go 语言的官方 MongoDB 驱动程序。
- neo4j- Golang 的 Neo4j Rest API 绑定。
- neoism- 用于 Golang 的 Neo4j 客户端。
- qmgo- Go 语言的 MongoDB 驱动程序。它基于官方 MongoDB 驱动程序,但使用起来更像 Mgo 一样简单。
- redeo- 与 Redis 协议兼容的 TCP 服务器/服务。
- redigo- Redigo 是 Redis 数据库的 Go 客户端。
- redis- Golang 的 Redis 客户端。
- rueidis- 快速的 Redis RESP3 客户端,具有自动流水线和服务器辅助的客户端缓存功能。
- xredis- 类型安全、可定制、简洁易用的 Redis 客户端。
搜索和分析数据库
- clickhouse-go- ClickHouse SQL 客户端,适用于 Go,兼容 database/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- 增强时间功能,用于处理日期、日期范围、时间跨度、周期和一天中的时间。
- dateparse- 无需预先知道格式即可解析日期。
- durafmt- Go 的时间持续时间格式化库。
- feiertage- 一套用于计算德国公共假日的函数,包括针对德国各州(联邦州)的专用函数。例如复活节、圣灵降临节、感恩节……
- go-anytime- 无需预先知道格式,即可解析日期/时间(例如“下一个 12 月 22 日下午 3 点”)和范围(例如“从今天到下周四”)。
- go-datebin- 一个简单的日期时间解析包。
- go-faketime- 一个简单的 time.Now(),它遵循 faketime(1) 工具。
- 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 时间包的实用扩展(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- 一个改进的 Google jump 一致性哈希。
- dragonboat- 一个功能齐全、高性能的 Go 多组 Raft 库。
- Dragonfly- 基于 p2p 技术提供高效、稳定、安全的文件分发和图像加速,成为云原生架构中的最佳实践和标准解决方案。
- drmaa- 基于 DRMAA 标准的集群调度器作业提交库。
- dynamolock- 基于 DynamoDB 的分布式锁定实现。
- dynatomic- 一个使用 DynamoDB 作为原子计数器的库。
- emitter-io- 高性能、分布式、安全、低延迟的发布/订阅平台,采用 MQTT、Websockets 和爱构建。
- 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-jump- Google 的“Jump”一致性哈希函数的移植版。
- go-kit- 微服务工具包,支持服务发现、负载均衡、可插拔传输、请求跟踪等。
- go-micro- 一个分布式系统开发框架。
- go-mysql-lock- 基于 MySQL 的分布式锁。
- go-pdu- 一个去中心化的基于身份的社交网络。
- go-sundheit- 一个旨在为 golang 服务定义异步服务健康检查提供支持的库。
- go-zero- 一个 Web 和 RPC 框架。它旨在通过弹性设计确保繁忙网站的稳定性。内置的 goctl 极大地提高了开发效率。
- gorpc- 简单、快速且可扩展的 RPC 库,适用于高负载。
- grpc-go- Go 语言实现的 gRPC。基于 HTTP/2 的 RPC。
- hprose- 非常新的 RPC 库,现在支持 25 多种语言。
- jsonrpc- jsonrpc 包有助于实现 JSON-RPC 2.0。
- jsonrpc- JSON-RPC 2.0 HTTP 客户端实现。
- K8gb- 一个云原生的 Kubernetes 全局负载均衡器。
- Kratos- 一个模块化设计且易于使用的 Go 微服务框架。
- liftbridge- 为 NATS 提供轻量级、容错的消息流。
- lura- 具有中间件的超高性能 API 网关框架。
- micro- 面向云及其他环境的分布式系统运行时。
- mochi mqtt- 完全符合规范、可嵌入的高性能 MQTT v5/v3 代理,适用于物联网、智能家居和发布/订阅。
- NATS- NATS 是一个简单、安全、高性能的通信系统,适用于数字系统、服务和设备。
- opentelemetry-go-auto-instrumentation- OpenTelemetry 编译时检测 Golang。
- oras- 容器注册表中 OCI 工件的 CLI 和库。
- outbox- Go 中用于事务性 outbox 模式的轻量级库,不依赖于任何特定的关系数据库或代理。
- 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- 实时 API 网关,用于构建 REST、实时和 RPC API,所有客户端无缝同步。
- ringpop-go- 为 Go 应用程序提供可扩展、容错的应用层分片。
- rpcx- 分布式可插拔 RPC 服务框架,类似于阿里巴巴 Dubbo。
- Semaphore- 一个简单的(微型)服务编排器。
- sleuth- 用于在 HTTP 服务之间进行无主 p2p 自动发现和 RPC 的库(使用 ZeroMQ)。
- sponge- 一个分布式开发框架,集成了自动代码生成、gin 和 grpc 框架以及基础开发框架。
- Tarmac- 用于使用 WebAssembly 编写函数、微服务或单体应用的框架
- Temporal- 持久执行系统,使代码具有容错性和简洁性。
- torrent- BitTorrent 客户端软件包。
- trpc-go- tRPC 的 Go 语言实现,tRPC 是一个可插拔的高性能 RPC 框架。
动态 DNS
用于更新动态 DNS 记录的工具。- DDNS- 以 Digital Ocean Networking DNS 为后端的个人 DDNS 客户端。
- dyndns- 后台 Go 进程,用于定期自动检查您的 IP 地址,并在您的地址更改时更新 Google 域的(一个或多个)动态 DNS 记录。
- GoDNS- 一个动态 DNS 客户端工具,支持 DNSPod 和 HE.net,用 Go 编写。
电子邮件
用于实现电子邮件创建和发送的库和工具。- chasquid- 用 Go 编写的 SMTP 服务器。
- douceur- 用于 HTML 电子邮件的 CSS 内联器。
- email- 一个强大而灵活的 Go 电子邮件库。
- email-verifier- 一个用于电子邮件验证的 Go 库,无需发送任何电子邮件。
- go-dkim- DKIM 库,用于签名和验证电子邮件。
- go-email-normalizer- 用于提供电子邮件地址规范表示的 Golang 库。
- go-imap- 用于客户端和服务器的 IMAP 库。
- go-mail- 一个简单的 Go 库,用于在 Go 中发送邮件。
- go-message- 用于互联网消息格式和邮件消息的流式库。
- go-premailer- Go 中 HTML 邮件的内联样式。
- go-simple-mail- 一个非常简单的软件包,用于发送带有 SMTP Keep Alive 和两个超时(连接和发送)的电子邮件。
- Hectane- 提供 HTTP API 的轻量级 SMTP 客户端。
- hermes- 生成简洁、响应式 HTML 电子邮件的 Golang 包。
- Maddy- 一体化(支持 SMTP、IMAP、DKIM、DMARC、MTA-STS、DANE)邮件服务器
- mailchain- 向区块链地址发送加密电子邮件,使用 Go 编写。
- mailgun-go- 使用 Mailgun API 发送邮件的 Go 库。
- MailHog- 具有 Web 和 API 接口的电子邮件和 SMTP 测试。
- Mailpit- 面向开发人员的电子邮件和 SMTP 测试工具。
- mailx- Mailx 是一个简化通过 SMTP 发送电子邮件的库。它是对 golang 标准库 net/smtp 的增强。
- mox- 现代化的全功能安全邮件服务器,适用于低维护、自托管电子邮件。
- SendGrid- SendGrid 的 Go 库,用于发送电子邮件。
- smtp- SMTP 服务器协议状态机。
- smtpmock- 轻量级可配置的多线程模拟 SMTP 服务器。为您的测试环境模拟任何 SMTP 行为。
- truemail-go- 可配置的 Golang 电子邮件验证器/确认器。通过正则表达式、DNS、SMTP 等多种方式验证电子邮件。
可嵌入脚本语言
在 Go 代码中嵌入其他语言。- anko- 用 Go 编写的可脚本化解释器。
- binder- 转到 Lua 绑定库,基于 gopher-lua。
- cel-go- 快速、可移植、非图灵完备的表达式求值,支持逐步类型。
- ecal- 一种支持并发事件处理的简单可嵌入脚本语言。
- expr- Go 的表达式求值引擎:快速、非图灵完备、动态类型、静态类型。
- FrankenPHP- 嵌入 Go 的 PHP,带有 net/http 处理程序。
- gentee- 可嵌入的脚本编程语言。
- gisp- 用 Go 编写的简单 LISP。
- go-lua- 将 Lua 5.2 VM 移植到纯 Go。
- go-php- Go 的 PHP 绑定。
- 目标- 一种可嵌入的脚本数组语言。
- goja- Go 中的 ECMAScript 5.1(+) 实现。
- golua- Lua C API 的 Go 绑定。
- gopher-lua- 用 Go 编写的 Lua 5.1 虚拟机和编译器。
- gval- 一种用 Go 编写的高度可定制的表达式语言。
- metacall- 跨平台多语言运行时,支持 NodeJS、JavaScript、TypeScript、Python、Ruby、C#、WebAssembly、Java、Cobol 等。
- ngaro- 可嵌入 Ngaro VM 实现,支持在 Retro 中编写脚本。
- prolog- 可嵌入的 Prolog。
- purl- 嵌入 Go 的 Perl 5.18.2。
- starlark-go- Starlark 的 Go 实现:一种类似 Python 的语言,具有确定性求值和封闭执行。
- starlet- starlark-go 的 Go 封装,简化脚本执行,提供数据转换以及有用的 Starlark 库和扩展。
- tengo- Go 的字节码编译脚本语言。
- Wa/凹语言- Go 中嵌入的 Wa 编程语言。
错误处理
用于处理错误的库。- emperror- Go 库和应用程序的错误处理工具和最佳实践。
- eris- 一种更好的 Go 错误处理、跟踪和日志记录方式。兼容标准错误库和 github.com/pkg/errors。
- errlog- 一个可定制的软件包,用于确定错误的相关源代码(以及其他一些快速调试功能)。可直接插入到任何日志记录器中。
- errors- 可直接替代标准库 errors 包和 github.com/pkg/errors。提供各种错误处理原语。
- errors- 使用分类原语的简单 golang 错误处理。
- errors- 最简单的错误包装器,具有出色的性能和最小的内存开销。
- errors- 提供错误信息,包括堆栈跟踪和可选的结构化详细信息。与 github.com/pkg/errors API 兼容,但内部不使用。
- errors- 可直接替换 Go 内置错误处理的包。这是一个极简的错误处理包,提供自定义错误类型、用户友好的错误信息、Unwrap 和 Is 函数,以及非常易用且简洁的辅助函数。
- errors- Go 错误库,具有网络错误可移植性。
- errorx- 一个功能丰富的错误包,包含堆栈跟踪、错误组合等。
- exception- 一个简单的实用程序包,用于在 Golang 中使用 try-catch 处理异常。
- Falcon- 一个简单而功能强大的错误处理包。
- Fault- 一种符合人体工程学的机制,用于包装错误,以便为错误值提供结构化的元数据和上下文。
- go-multierror- Go (golang) 包,用于将错误列表表示为单个错误。
- metaerr- 一个用于创建自定义错误构建器的库,该构建器可生成带有来自不同来源的元数据和可选堆栈跟踪的结构化错误。
- multierr- 用于将错误列表表示为单个错误的软件包。
- oops- 带有上下文、堆栈跟踪和源代码片段的错误处理。
- tracerr- Golang 错误,带有堆栈跟踪和源代码片段。
用于处理文件和文件系统的库。
- afero- Go 的文件系统抽象系统。
- afs- Go 的抽象文件存储(内存、scp、zip、tar、云:s3、gs)。
- baraka- 一个可以轻松处理 http 文件上传的库。
- checksum- 计算大文件的消息摘要,例如 MD5、SHA256、SHA1、CRC 或 BLAKE2s。
- copy- 递归复制目录。
- fastwalk- 快速并行目录遍历库(由 fzf 使用)。
- flop- 文件操作库,旨在实现与 GNU cp 的功能对等。
- gdu- 带有控制台界面的磁盘使用情况分析器。
- go-csv-tag- 使用标签加载 csv 文件。
- go-decent-copy- 为人类复制文件。
- go-exiftool- ExifTool 的 Go 绑定,ExifTool 是一个著名的库,用于从文件(图片、PDF、办公文档等)中提取尽可能多的元数据(EXIF、IPTC 等)。
- go-gtfs- 在 Go 中加载 gtfs 文件。
- go-wkhtmltopdf- 一个将 HTML 模板转换为 PDF 文件的软件包。
- gofs- 一款开箱即用的跨平台实时文件同步工具。
- gulter- 一个简单的 HTTP 中间件,可自动处理所有文件上传需求
- gut/yos- 简单可靠的文件操作包,例如对文件、目录和符号链接进行复制/移动/比较/列出操作。
- higgs- 一个用于隐藏/取消隐藏文件和目录的小型跨平台 Go 库。
- iso9660- 用于读取和创建 ISO9660 磁盘映像的软件包
- notify- 文件系统事件通知库,具有简单的 API,类似于 os/signal。
- opc- 为 Go 加载开放打包约定 (OPC) 文件。
- parquet- 读取和写入 parquet 文件。
- pathtype- 将路径视为一种单独的类型,而不是使用字符串。
- pdfcpu- PDF 处理器。
- skywalker- 一个可以轻松地同时遍历文件系统的软件包。
- todotxt- 用于 Gina Trapani 的 _todo.txt_ 文件的 Go 库,支持解析和操作 _todo.txt_ 格式 中的任务列表。
- vfs- 一套可插拔、可扩展且具有特定风格的 Go 文件系统功能集,支持多种文件系统类型,例如 os、S3 和 GCS。
金融的
会计和财务软件包。- accounting- golang 的货币和货币格式化。
- ach- 自动清算中心 (ACH) 文件的读取器、写入器和验证器。
- bbgo- 一个用 Go 语言编写的加密货币交易机器人框架。包含常用的加密货币交易所 API、标准指标、回测功能和许多内置策略。
- currency- 处理货币金额,提供货币信息和格式。
- currency- 高性能、高精度的货币计算包。
- dec128- 高性能 128 位定点十进制数。
- decimal- 任意精度定点十进制数。
- decimal- 具有无恐慌运算的不可变十进制数。
- fpdecimal- 用于小定点十进制数的快速精确序列化和算术运算
- fpmoney- 快速简单的 ISO4217 定点十进制货币。
- go-finance- 用于货币时间价值(年金)、现金流、利率转换、债券和折旧计算的金融函数库。
- go-finance- 用于获取汇率、通过 VIES 检查增值税号和检查 IBAN 银行账号的模块。
- go-money- Fowler 货币模式的实现。
- go-nowpayments- 用于加密 NOWPayments API 的库。
- gobl- 发票和账单文档框架。基于 JSON Schema。自动计算和验证税款,并提供工具将其转换为全球通用格式。
- ledger- 一个可编程的金融账簿,为资金转移应用程序提供基础。
- money- 具有无恐慌性算术的不可更改的货币数量和汇率。
- ofxgo- 查询 OFX 服务器和/或解析响应(附带命令行客户端示例)。
- orderbook- Golang 中的限价订单簿撮合引擎。
- payme- 用于 SEPA 支付的二维码生成器(ASCII 和 PNG)。
- swift- 离线验证 IBAN(国际银行账号)和检索 BIC(适用于某些国家/地区)。
- techan- 具有高级市场分析和交易策略的技术分析库。
- ticker- 终端股票观察器和股票持仓跟踪器。
- transaction- 嵌入式账户事务数据库,以多线程模式运行。
- udecimal- 高性能、高精度、零内存分配的定点十进制库,适用于金融应用。
- vat- 增值税号验证和欧盟增值税税率。
表格
用于处理表单的库。- bind- 将表单数据绑定到任何 Go 值。
- checker- Checker 通过在结构标签中定义的规则或直接通过函数来帮助验证用户输入。
- conform- 控制用户输入。根据结构标签修剪、清理和清洗数据。
- form- 将 url.Values 解码为 Go 值,并将 Go 值编码为 url.Values。支持双数组和完整映射。
- formam- 将表单的值解码为结构体。
- forms- 一个与框架无关的库,用于解析和验证表单/JSON 数据,支持多部分表单和文件。
- gbind- 将数据绑定到任何 Go 值。可以使用内置和自定义表达式绑定功能;支持数据验证
- gorilla/csrf- Go Web 应用程序和服务的 CSRF 保护。
- httpin- 将 HTTP 请求解码为自定义结构,包括查询字符串、表单、HTTP 标头等。
- nosurf- Go 的 CSRF 保护中间件。
- qs- 用于将结构体编码为 URL 查询参数的 Go 模块。
- queryparam- 将 url.Values 解码为标准或自定义类型的可用结构值。
- roamer- 通过使用简单的标签将 cookie、标头、查询参数、路径参数、主体绑定到结构体等,从而消除解析 HTTP 请求的样板代码。
功能
用于支持 Go 函数式编程的软件包。- fp-go- 由 Golang 1.18+ 泛型支持的函数式编程辅助函数集合。
- fpGo- Monad,Golang 的函数式编程特性。
- fuego- Go 中的函数式实验。
- FuncFrog- 函数式辅助库,提供对通用切片的 Map、Filter、Reduce 和其他流操作,支持 Go1.18+,具有惰性求值和错误处理机制。
- go-functional- 使用泛型在 Go 中进行函数式编程
- go-underscore- 一个实用的 Go 集合工具集。
- gofp- 一个类似 lodash 的强大的 Golang 实用工具库。
- mo- 基于 Go 1.18+ 泛型(Option、Result、Either...)的 Monad 和流行的函数式编程抽象。
- underscore- Go 1.18 及更高版本的函数式编程辅助工具。
- valor- 可选择性地包含值的通用选项和结果类型。
游戏开发
非常棒的游戏开发库。- Ark- Go 的基于原型的实体组件系统 (ECS)。
- Ebitengine- 用 Go 编写的极其简单的 2D 游戏引擎。
- ecs- 基于 Golang 中的实体组件系统概念构建您自己的游戏引擎。
- engo- Engo 是一个用 Go 语言编写的开源 2D 游戏引擎。它遵循实体-组件-系统范式。
- fantasyname- 奇幻名字生成器。
- g3n- Go 3D 游戏引擎。
- go-astar- A* 路径查找算法的 Go 实现。
- go-sdl2- Simple DirectMedia Layer的Go绑定。
- go3d- 面向性能的 Go 2D/3D 数学包。
- gonet- 使用 golang 实现的游戏服务器框架。
- goworld- 可扩展的游戏服务器引擎,具有空间实体框架和热插拔功能。
- grid- 具有光线投射、阴影投射和路径查找功能的通用 2D 网格。
- Leaf- 轻量级游戏服务器框架。
- nano- 轻量级、便捷、高性能的基于 golang 的游戏服务器框架。
- Oak- 纯 Go 游戏引擎。
- Pi- 用于在现代计算机上创建复古游戏的引擎。灵感源自 Pico-8,并由 Ebitengine 提供技术支持。
- Pitaya- 可扩展的游戏服务器框架,支持集群,并通过 C SDK 提供适用于 iOS、Android、Unity 等平台的客户端库。
- Pixel- 用 Go 语言手工打造的 2D 游戏库。
- prototype- 跨平台(Windows/Linux/Mac)库,使用最小 API 创建桌面游戏。
- raylib-go- Go 语言绑定的 raylib,这是一个简单易用的库,用于学习电子游戏编程。
- termloop- 基于终端的 Go 游戏引擎,构建于 Termbox 之上。
- tile- 面向数据且对缓存友好的 2D 网格库 (TileMap),包含寻路、观察者和导入/导出功能。
生成器
生成 Go 代码的工具。- convergen- 功能丰富的类型到类型复制代码生成器。
- copygen- 默认情况下,生成基于 Go 类型的任何代码,包括类型到类型的转换器(复制代码),而无需反射。
- generis- 提供泛型、自由格式宏、条件编译和 HTML 模板的代码生成工具。
- go-enum- 根据代码注释生成枚举代码。
- go-enum-encoding- 根据代码注释生成枚举编码的代码。
- go-linq- Go 的 .NET LINQ 类查询方法。
- goderive- 从输入类型派生函数
- goverter- 通过定义接口生成转换器。
- GoWrap- 使用简单的模板为 Go 接口生成装饰器。
- interfaces- 用于生成接口定义的命令行工具。
- jennifer- 无需模板即可生成任意 Go 代码。
- oapi-codegen- 此软件包包含一组实用程序,用于根据 OpenAPI 3.0 API 定义生成服务的 Go 样板代码。
- typeregistry- 一个用于动态创建类型的库。
地理
地理工具和服务器- borders- 检测图像边界并将其转换为 GeoJSON 以进行 GIS 操作。
- geoos- 一个提供空间数据和几何算法的库。
- geoserver- geoserver 是一个 Go 包,用于通过 GeoServer REST API 操作 GeoServer 实例。
- gismanager- 将您的 GIS 数据(矢量数据)发布到 PostGIS 和 Geoserver。
- godal- GDAL 的包装器。
- H3- H3 的 Go 绑定,H3 是一个分层六边形地理空间索引系统。
- H3 GeoJSON- H3 索引和 GeoJSON 之间的转换工具。
- H3GeoDist- 通过虚拟节点分发 Uber H3geo 单元格。
- mbtileserver- 一个简单的基于 Go 的服务器,用于存储 mbtiles 格式的地图瓦片。
- osm- 用于读取、写入和处理 OpenStreetMap 数据和 API 的库。
- pbf- OpenStreetMap PBF golang 编码器/解码器。
- S2 geojson- 将 geojson 转换为 s2 单元格,并在地图上演示一些 S2 几何特征。
- S2 geometry- Go 中的 S2 geometry 库。
- simplefeatures- simplesfeatures 是一个 2D 几何库,它提供了对几何体进行建模的 Go 类型,以及对它们进行操作的算法。
- Tile38- 具有空间索引和实时地理围栏的地理位置数据库。
- Web-Mercator-Projection一个使用 Web Mercator 投影轻松使用和转换 LonLat、Point 和 Tile 的项目,以便在地图上显示信息、标记等。
- WGS84- 坐标转换和变换库(ETRS89、OSGB36、NAD83、RGF93、Web Mercator、UTM)。
Go 编译器
用于将 Go 代码编译成其他语言以及将 Go 代码编译成其他语言的工具。- bunster- 将 shell 脚本编译为 Go。
- c4go- 将 C 代码转译为 Go 代码。
- cxgo- 将 C 代码转译为 Go 代码。
- esp32- Transpile 进入 Arduino 代码。
- f4go- 将 FORTRAN 77 代码转换为 Go 代码。
- go2hx- 从 Go 到 Haxe 到 Javascript/C++/Java/C# 的编译器。
- gopherjs- Go 到 JavaScript 的编译器。
Goroutines
用于管理和使用 Goroutine 的工具。- anchor- 用于管理微服务架构中组件生命周期的库。
- ants- Go 中高性能、低成本的 goroutine 池。
- artifex- 一个简单的 Golang 内存作业队列,使用基于 worker 的调度。
- async- 一个用于 Go 的 async/await 风格的异步任务包。
- async- Go 的替代同步库(Future、Promise、Locks)。
- async- 一种安全的方式异步执行函数,在发生 panic 时恢复它们。
- async-job- AsyncJob 是一个异步队列作业管理器,代码轻量、清晰、速度快。
- breaker- 使执行流程可中断的灵活机制。
- channelify- 将你的函数转换为返回通道,以便轻松实现强大的并行处理。
- conc- conc 是 Go 中用于结构化并发的工具箱,使常见任务更轻松、更安全。
- concurrency-limiter- 支持超时、动态优先级和 goroutine 上下文取消的并发限制器。
- conexec- 一个并发工具包,旨在帮助用户高效安全地并发执行函数。它支持指定总超时时间以避免阻塞,并使用 goroutine 池来提高效率。
- cyclicbarrier- 用于 golang 的 CyclicBarrier。
- execpool- 一个基于 exec.Cmd 构建的进程池,它会预先启动指定数量的进程,并在需要时将标准输入和标准输出附加到这些进程。它与 FastCGI 或 Apache Prefork MPM 非常相似,但适用于任何命令。
- flowmatic- 让结构化并发变得简单。
- go-accumulator- 用于事件累积及其后续处理的解决方案。
- go-actor- 一个使用 Actor 模型编写并发程序的微型库。
- go-floc- 轻松编排 goroutine。
- go-flow- 控制 goroutine 的执行顺序。
- go-tools/multithreading- 使用这个轻量级库和简单的 API 管理 goroutine 池。
- go-trylock- Golang 的读写锁 TryLock 支持。
- go-waitgroup- 类似于具有错误处理和并发控制的 sync.WaitGroup。
- go-workerpool- 受 Java Thread Pool 的启发,Go WorkerPool 旨在控制繁重的 Go Routine。
- goccm- Go 并发管理器包限制了允许同时运行的 goroutine 的数量。
- gohive- 一个高性能且易于使用的 Go Goroutine 池。
- gollback- 异步简单函数实用程序,用于管理闭包和回调的执行。
- gowl- Gowl 是一款集进程管理和进程监控于一体的工具。无限的工作进程池让您可以控制进程池和进程,并监控它们的状态。
- goworker- goworker 是一个基于 Go 的后台工作进程。
- gowp- gowp 是一个限制并发的 goroutine 池。
- gpool- 管理一个可调整大小的上下文感知 goroutine 池,以限制并发性。
- grpool- 轻量级 Goroutine 池。
- hands- 一个进程控制器,用于控制多个 goroutine 的执行和返回策略。
- Hunch- Hunch 提供了诸如 All、First、Retry、Waterfall 等函数,使异步流程控制更加直观。
- kyoo- 提供无限的作业队列和并发工作池。
- neilotoole/errgroup- sync/errgroup 的替代版本,仅限于 N 个工作 goroutine 的池。
- nursery- Go 中的结构化并发。
- oversight- Oversight 是 Erlang 监督树的完整实现。
- parallel-fn- 并行运行函数。
- pond- 用 Go 编写的极简且高性能的 goroutine 工作池。
- pool- 有限的消费者 goroutine 或无限的 goroutine 池,以便更轻松地处理和取消 goroutine。
- rill- 用于实现干净、可组合、基于通道的并发的 Go 工具包。
- routine- routine 是一个 Go 库的 ThreadLocal。它封装并提供了一些易于使用、非竞争性、高性能的 goroutine 上下文访问接口,可以帮助您更优雅地访问协程上下文信息。
- routine- 带有上下文的 go 例程控制,支持:Main、Go、Pool 和一些有用的执行器。
- semaphore- 基于通道和上下文的信号量模式实现,具有锁定/解锁操作的超时功能。
- semaphore- 基于 CAS 的快速可调整大小的信号量实现(比基于通道的信号量实现更快)。
- stl- 基于软件事务内存 (STM) 并发控制机制的软件事务锁。
- threadpool- Golang 线程池实现。
- tunny- golang 的 Goroutine 池。
- worker-pool- goworker 是一个简单的 Go 异步工作池。
- workerpool- 限制任务执行并发性的 Goroutine 池,而不是限制排队的任务数量。
图形用户界面
用于构建图形用户界面应用程序的库。工具包
- app- 用于创建 Go、HTML 和 CSS 应用的软件包。支持:MacOS,Windows 版本正在开发中。
- cimgui-go- 通过 cimgui 自动生成的 Dear ImGui Go 包装器。
- Cogent Core- 一个用于构建可在 macOS、Windows、Linux、iOS、Android 和 Web 上运行的 2D 和 3D 应用程序的框架。
- DarwinKit- 使用 Go 构建原生 macOS 应用程序。
- energy- 基于 LCL(原生系统 UI 控件库)和 CEF(Chromium 嵌入式框架)的跨平台应用(Windows/ macOS / Linux)
- fyne- 基于 Material Design 的 Go 语言跨平台原生 GUI 开发工具。支持:Linux、macOS、Windows、BSD、iOS 和 Android。
- gio- Gio 是一个用于用 Go 语言编写跨平台即时模式 GUI 的库。Gio 支持所有主流平台:Linux、macOS、Windows、Android、iOS、FreeBSD、OpenBSD 和 WebAssembly。
- go-gtk- GTK 的 Go 绑定。
- go-sciter- Sciter 的 Go 绑定:用于现代桌面 UI 开发的可嵌入 HTML/CSS/脚本引擎。跨平台。
- Goey- 适用于 Windows/Linux/Mac 的跨平台 UI 工具包聚合器。支持 GTK、Cocoa 和 Windows API。
- goradd/html5tag- 用于输出 HTML5 标签的库。
- gotk3- GTK3 的 Go 绑定。
- gowd- 使用 GO、HTML、CSS 和 NW.js 进行快速简单的桌面 UI 开发。跨平台。
- qt- Go 的 Qt 绑定(支持 Windows / macOS / Linux / Android / iOS / Sailfish OS / Raspberry Pi)。
- Spot- 响应式、跨平台桌面 GUI 工具包。
- ui- 用于 Go 的平台原生 GUI 库。跨平台。
- unison- 一个用于 Go 桌面应用程序的统一图形用户体验工具包。支持 macOS、Windows 和 Linux。
- Wails- 使用内置操作系统 HTML 渲染器的 Mac、Windows、Linux 桌面应用程序,具有 HTML 用户界面。
- walk- 用于 Go 的 Windows 应用程序库工具包。
- webview- 具有简单双向 JavaScript 绑定的跨平台 webview 窗口(Windows / macOS / Linux)。
- AppIndicator Go- libappindicator3 C 库的 Go 绑定。
- gosx-notifier- 用于 Go 的 OSX 桌面通知库。
- mac-activity-tracker- 用于通知您计算机上任何(可插拔的)活动的 OSX 库。
- mac-sleep-notifier- golang 中的 OSX 睡眠/唤醒通知。
- robotgo- Go Native 跨平台 GUI 系统自动化。控制鼠标、键盘等。
- systray- 跨平台 Go 库,用于在通知区域放置图标和菜单。
- trayhost- 跨平台 Go 库,用于在主机操作系统的任务栏中放置图标。
- zenity- 跨平台 Go 库和 CLI,用于创建与用户进行图形交互的简单对话框。
硬件
用于与硬件交互的库、工具和教程。- arduino-cli- 官方 Arduino 命令行界面和库。可独立运行,也可集成到大型 Go 项目中。
- emgo- 用于对嵌入式系统(例如 STM32 MCU)进行编程的类似 Go 的语言。
- ghw- Golang 硬件发现/检测库。
- go-osc- Go 的 Open Sound Control (OSC) 绑定。
- go-rpio- Go 的 GPIO,不需要 cgo。
- goroslib- 用于 Go 的机器人操作系统 (ROS) 库。
- joystick- 一个轮询 API,用于读取所连接游戏手柄的状态。
- sysinfo- 一个纯 Go 库,提供 Linux 操作系统/内核/硬件系统信息。
用于处理图像的库。
- bild- 纯 Go 语言编写的图像处理算法集合。
- bimg- 使用 libvips 进行快速高效图像处理的小软件包。
- cameron- Go 的头像生成器。
- canvas- 将矢量图形转换为 PDF、SVG 或栅格化图像。
- color-extractor- 一款没有外部依赖项的主颜色提取器。
- darkroom- 一个图像代理,具有可变存储后端和图像处理引擎,专注于速度和弹性。
- geopattern- 从字符串创建漂亮的生成式图像图案。
- gg- 纯 Go 语言的 2D 渲染。
- gift- 图像处理滤波器包。
- gltf- 高效且强大的 glTF 2.0 读取器、写入器和验证器。
- go-cairo- cairo 图形库的 Go 绑定。
- go-gd- GD 库的 Go 绑定。
- go-nude- 使用 Go 进行裸体检测。
- go-qrcode- 生成具有个性化样式的二维码,允许调整颜色、块大小、形状和图标。
- go-webcolors- 将 webcolors 库从 Python 移植到 Go。
- go-webp- 使用 libwebp 编码和解码 webp 图片的库。
- gocv- 使用 OpenCV 3.3+ 的 Go 语言计算机视觉软件包。
- goimagehash- Go 感知图像哈希包。
- goimghdr- imghdr 模块用于确定 Go 文件中包含的图像类型。
- govatar- 用于生成有趣头像的库和 CMD 工具。
- govips- 一个速度极快的 Go 图像处理和调整大小库。
- gowitness- 使用 go 和无头 chrome 在命令行上截取网页屏幕截图。
- gridder- 一个基于网格的 2D 图形库。
- image2ascii- 将图像转换为 ASCII 码。
- imagick- ImageMagick 的 MagickWand C API 的 Go 绑定。
- imaginary- 用于图像大小调整的快速简单的 HTTP 微服务。
- imaging- 简单的 Go 图像处理包。
- imagor- 快速、安全的图像处理服务器和 Go 库,使用 libvips。
- img- 图像处理工具的选择。
- ln- Go 中的 3D 线条艺术渲染。
- mergi- 用于图像处理的 Tool & Go 库(合并、裁剪、调整大小、添加水印、动画)。
- mort- 用 Go 编写的存储和图像处理服务器。
- mpo- MPO 3D 照片的解码器和转换工具。
- nativewebp- 零外部依赖的 Go 原生 WebP 编码器。
- picfit- 一个用 Go 编写的图像调整大小服务器。
- pt- 用 Go 编写的路径追踪引擎。
- scout- Scout 是一个独立的开源软件解决方案,用于 DIY 视频安全。
- smartcrop- 为任意图像和裁剪尺寸找到合适的裁剪效果。
- steganography- 纯 Go 库,用于 LSB 隐写术。
- stegify- 用于 LSB 隐写术的 Go 工具,能够将任何文件隐藏在图像中。
- svgo- 用于生成 SVG 的 Go 语言库。
- transformimgs- Transformimgs 使用下一代格式调整图像大小并优化图像以用于 Web。
- webp-server- 简单且最小的图像服务器,能够存储、调整大小、转换和缓存图像。
物联网 (IoT)
用于物联网设备编程的库。- connectordb- 面向量化自我和物联网的开源平台。
- devices- 物联网设备库套件,适用于 x/exp/io 的实验性库。
- ekuiper- 用于物联网边缘的轻量级数据流处理引擎。
- eywa- Project Eywa 本质上是一个连接管理器,用于跟踪已连接的设备。
- flogo- Project Flogo 是一个用于物联网边缘应用和集成的开源框架。
- gatt- Gatt 是一个用于构建低功耗蓝牙外设的 Go 包。
- gobot- Gobot 是一个用于机器人、物理计算和物联网的框架。
- huego- 一个功能强大的 Go 语言 Philips Hue 客户端库。
- iot- IoT 是一个用于实现 Google IoT Core 设备的简单框架。
- periph- 用于与底层板级设备接口的外围设备 I/O。
- rulego- RuleGo 是一个轻量级、高性能、嵌入式、可编排的基于组件的物联网边缘规则引擎。
- sensorbee- 用于物联网的轻量级流处理引擎。
- shifu- Kubernetes 原生物联网开发框架。
- smart-home- 用于物联网自动化的软件包。
作业调度器
用于调度作业的库。- cdule- 支持数据库的作业调度库
- cheek- 一个简单的类似 crontab 的调度器,旨在为作业调度提供 KISS 方法。
- clockwerk- Go 包,使用简单流畅的语法来调度周期性作业。
- cronticker- 支持 cron 计划任务的 ticker 实现。
- go-cron- 一个简单的 Go 语言定时任务库,可以按不同的时间间隔执行闭包或函数,从每秒一次到每年一次,并可指定执行日期和时间。主要用于 Web 应用程序和长时间运行的守护进程。
- go-job- 一个灵活且可扩展的 Go 作业调度和执行库。
- go-quartz- 一个简单、零依赖的 Go 调度库。
- go-scheduler- 支持标准 cron 表达式、自定义描述符、间隔和任务依赖关系的作业调度器。
- gocron- 简单流畅的 Go 作业调度。这是 jasonlvhit/gocron 的一个积极维护的分支。
- goflow- 一个简单但功能强大的 DAG 调度器和仪表板。
- gron- 使用简单的 Go API 定义基于时间的任务,Gron 的调度程序将相应地运行它们。
- gronx- Cron 表达式解析器、任务运行器和守护程序,用于处理类似 crontab 的任务列表。
- JobRunner- 智能且功能丰富的 cron 作业调度器,内置作业队列和实时监控功能。
- leprechaun- 支持 webhook、cron 和经典调度的作业调度器。
- sched- 一个能够快进时间的作业调度器。
- scheduler- 让 Cronjobs 调度变得简单。
- tasks- 一个易于使用的 Go 进程内重复任务调度器。
JSON
用于处理 JSON 的库。- ajson- 支持 JSONPath 的 golang 抽象 JSON。
- ask- 轻松访问映射和切片中的嵌套值。可与 encoding/json 以及其他将任意数据“反序列化”为 Go 数据类型的包配合使用。
- dynjson- 客户端可自定义的动态 API JSON 格式。
- ej- 简洁地从不同来源写入和读取 JSON。
- epoch- 包含用于将 Unix 时间戳/epoch 序列化/反序列化为 JSON 中内置的 time.Time 类型的原语。
- fastjson- 用于 Go 的快速 JSON 解析器和验证器。无需自定义结构体,无需代码生成,无需反射。
- gabs- 用于在 Go 中解析、创建和编辑未知或动态 JSON。
- gjo- 创建 JSON 对象的小工具。
- GJSON- 用一行代码获取 JSON 值。
- go-jsonerror- Go-JsonError 旨在让我们能够轻松创建符合 JsonApi 规范的 json 响应错误。
- go-respond- 用于处理常见 HTTP JSON 响应的 Go 包。
- gojmapr- 通过 json 路径从复杂的 json 中获取简单的结构体。
- gojq- Golang 中的 JSON 查询。
- gojson- 从示例 JSON 自动生成 Go (golang) 结构体定义。
- htmljson- Go 中 JSON 的 HTML 富文本渲染。
- JayDiff- 用 Go 编写的 JSON diff 工具。
- jettison- 用于 Go 的快速灵活的 JSON 编码器。
- jscan- 高性能零分配 JSON 迭代器。
- JSON-to-Go- 将 JSON 转换为 Go 结构体。
- JSON-to-Proto- 在线将 JSON 转换为 Protobuf。
- json2go- 高级 JSON 到 Go 结构体转换工具。该软件包可以解析多个 JSON 文档并创建适合它们的结构体。
- jsonapi-errors- 基于 JSON API 错误参考的 Go 绑定。
- jsoncolor- 可直接替换 encoding/json,输出彩色 JSON。
- jsondiff- 基于 RFC6902 (JSON Patch) 的 Go JSON diff 库。
- jsonf- 用于高亮格式化和结构化查询获取 JSON 的控制台工具。
- jsongo- 流畅的 API,使创建 Json 对象更加容易。
- jsonhal- 一个简单的 Go 包,用于将自定义结构体编组为 HAL 兼容的 JSON 响应。
- jsonhandlers- JSON 库,用于公开简单的处理程序,让您可以轻松地从各种来源读取和写入 json。
- jsonic- 以类型安全的方式处理和查询 JSON 而无需定义结构体的实用程序。
- jsonvalue- 一个快速便捷的非结构化 JSON 数据库,取代了 encoding/json。
- jzon- 具有标准兼容 API/行为的 JSON 库。
- kazaam- 用于对 JSON 文档进行任意转换的 API。
- mapslice-json- Go MapSlice,用于对 JSON 中的地图进行有序序列化/反序列化。
- marshmallow- 适用于灵活用例的高性能 JSON 反序列化。
- mp- 一个简单的命令行邮件解析器。它目前接收标准输入并输出 JSON 数据。
- OjG- Optimized JSON for Go 是一个高性能解析器,包含各种额外的 JSON 工具,包括 JSONPath。
- omg.jsonparser- 简单的 JSON 解析器,通过 golang 结构字段标签进行条件验证。
- SJSON- 用一行代码设置 JSON 值。
- ujson- 快速且极简的 JSON 解析器和转换器,适用于非结构化 JSON。
- vjson- 用于验证 JSON 对象并使用流畅 API 声明 JSON 模式的 Go 包。
日志记录
用于生成和处理日志文件的库。- distillog- 精简的分级日志记录(可以将其视为标准库 + 日志级别)。
- glg- glg 是一个简单快速的 Go 语言分级日志库。
- glo- 受 PHP Monolog 启发的日志记录工具,具有相同的严重级别。
- glog- Go 的分级执行日志。
- go-cronowriter- 一个简单的写入器,可以根据当前日期和时间自动轮换日志文件,类似于 cronolog。
- go-log- 一个日志库,具有堆栈跟踪、对象转储和可选时间戳。
- go-log- Go 中简单且可配置的日志记录器,具有级别、格式化程序和写入器。
- go-log- 日志库支持级别和多处理程序。
- go-log- Go 中的 Log4j 实现。
- go-logger- 简单的 Go 程序日志记录器,带有级别处理程序。
- gone/log- 快速、可扩展、功能齐全、与标准库源代码兼容的日志库。
- httpretty- 在终端上以美观的方式打印常规 HTTP 请求,以便进行调试(类似于 http.DumpRequest)。
- journald- 用于日志记录的 systemd Journal 原生 API 的 Go 实现。
- kemba- 一个受 debug 启发的小型调试日志工具,非常适合 CLI 工具和应用程序。
- lazyjournal- 一个用于读取和过滤 journalctl、文件系统、Docker 和 Podman 容器以及 Kubernetes pod 日志的 TUI。
- log- 一个 O(1) 日志系统,允许您将一个日志连接到多个写入器(例如 stdout、文件和 TCP 连接)。
- log- Go 的结构化日志包。
- log- 简单、可配置且可扩展的 Go 结构化日志记录。
- log- Go 的结构化日志接口,将日志外观与其实现清晰地分离。
- log- 对标准日志包的简单分级日志包装器。
- log- 一个开箱即用的简单日志框架。
- log15- 简单而强大的 Go 日志记录库。
- logdump- 多级日志记录包。
- logex- Golang 日志库,支持跟踪和级别,由标准日志库封装。
- logger- 一个极简的 Go 日志库。
- logo- Golang 日志记录器,可配置写入器。
- logrus- Go 的结构化日志记录器。
- logrusiowriter- 使用 logrus 日志记录器的 io.Writer 实现。
- logrusly- logrus 插件,用于将错误发送到 Loggly。
- logutils- 用于在 Go (Golang) 中实现略微改进的日志记录的实用程序,扩展了标准日志记录器。
- logxi- 一款速度快、令人愉悦的 12 要素应用程序日志记录器。
- lumberjack- 简单的滚动日志记录器,实现了 io.WriteCloser。
- mlog- 一个简单的 go 日志模块,具有 5 个级别、可选的轮换日志文件功能和 stdout/stderr 输出。
- noodlog- 参数化 JSON 日志库,可用于混淆敏感数据并处理任何类型的内容。不再打印指针而不是值,也不再需要对 JSON 字符串进行转义。
- onelog- Onelog 是一个极其简单但非常高效的 JSON 日志记录器。它是目前速度最快的 JSON 日志记录器,在所有场景下都是如此。此外,它的内存分配也是最低的日志记录器之一。
- ozzo-log- 高性能日志记录工具,支持日志严重性、分类和过滤。可以将过滤后的日志消息发送到各种目标(例如控制台、网络、邮件)。
- phuslu/log- 高性能结构化日志记录。
- pp- Go 语言的彩色美化打印机。
- rollingwriter- RollingWriter 是一个具有多种策略的自动轮换 io.Writer 实现,用于提供日志文件轮换。
- seelog- 具有灵活的分发、过滤和格式化功能的日志记录功能。
- sentry-go- Sentry Go SDK。帮助监控和跟踪错误,提供实时警报和性能监控。
- slf4g- Golang 的简单日志门面:简单的结构化日志记录;但功能强大、可扩展且可定制,并汲取了过去几十年日志框架的大量经验。
- slog- 轻量级、可配置、可扩展的 Go 日志记录器。
- slog-formatter- slog 的常用格式化程序和用于构建您自己的格式化程序的辅助工具。
- slog-multi- slog.Handler 链(pipeline、fanout...)。
- slogor- 一个色彩丰富的 slog 处理程序。
- spew- 为 Go 数据结构实现了一个深度美化打印机,以帮助调试。
- sqldb-logger- 一个用于 Go SQL 数据库驱动程序的日志记录器,无需修改现有的 *sql.DB 标准库用法。
- stdlog- Stdlog 是一个面向对象的库,提供分级日志记录功能。它对于定时任务非常有用。
- structy/log- 一个简单易用的日志系统,极简主义,但具有调试和区分消息的功能。
- tail- 一个 Go 包,旨在模拟 BSD tail 程序的功能。
- timberjack- 滚动日志记录器,支持基于大小、基于时间和基于计划时钟的轮换,支持压缩和清理。
- tint- 一个用于写入带颜色日志的 slog.Handler。
- xlog- Go 的插件架构和灵活的日志系统,具有级别控制、多个日志目标和自定义日志格式。
- xlog- 具有灵活分发功能的 net/context 感知 HTTP 处理程序的结构化日志记录器。
- xylog- 分级结构化日志记录、动态字段、高性能、区域管理、简单配置和可读语法。
- yell- 又一个极简的日志库。
- zap- Go 中快速、结构化、分层的日志记录。
- zax- 将 Context 与 Zap 日志记录器集成,从而为 Go 日志记录带来更大的灵活性。
- zerolog- 零分配 JSON 日志记录器。
- zkits-logger- 一个功能强大的零依赖 JSON 日志记录器。
- zl- 具有高开发者体验的基于 Zap 的日志记录器。它提供丰富的功能,但配置起来却很简单。
机器学习
机器学习库。- bayesian- Golang 的朴素贝叶斯分类。
- catboost-cgo- 快速、可扩展、高性能的决策树梯度提升库。使用 Cgo 编写的 Golang,用于实现极速推理的 CatBoost 模型。
- CloudForest- 纯 Go 语言编写的用于机器学习的快速、灵活、多线程决策树集成。
- ddt- 动态决策树,创建定义可自定义规则的树。
- eaopt- 一个进化优化库。
- evoli- 遗传算法和粒子群优化库。
- fonet- 一个用 Go 编写的深度神经网络库。
- go-cluster- k-modes 和 k-prototypes 聚类算法的 Go 实现。
- go-deep- 一个功能丰富的 Go 神经网络库。
- go-fann- 快速人工神经网络 (FANN) 库的 Go 绑定。
- go-galib- 用 Go / golang 编写的遗传算法库。
- go-pr- Go 语言中的模式识别包。
- gobrain- 用 Go 编写的神经网络。
- godist- 各种概率分布及相关方法。
- goga- Go 语言的遗传算法库。
- GoLearn- Go 的通用机器学习库。
- GoMind- 一个简单的 Go 语言神经网络库。
- goml- Go 中的在线机器学习。
- GoMLX- 一个用于 Go 的加速机器学习框架。
- gonet- Go 神经网络。
- Goptuna- 一个用 Go 语言编写的黑盒函数贝叶斯优化框架。所有函数都将被优化。
- goRecommend- 用 Go 编写的推荐算法库。
- gorgonia- 一个类似 Theano 的基于图的 Go 计算库,提供构建各种机器学习和神经网络算法的基本功能。
- gorse- 一个基于协同过滤的离线推荐系统后端,用 Go 编写。
- goscore- 用于 PMML 的 Go 评分 API。
- gosseract- 使用 Tesseract C++ 库的 Go 包,用于 OCR(光学字符识别)。
- hugot- 用于 golang 和 onnxruntime 的 Huggingface transformer pipelines。
- libsvm- libsvm golang 版本基于 LIBSVM 3.14 衍生而来。
- m2cgen- 一个 CLI 工具,用于将训练好的经典 ML 模型转译为原生 Go 代码,零依赖,用 Python 编写,支持 Go 语言。
- neural-go- 用 Go 实现的多层感知器网络,通过反向传播进行训练。
- ocrserver- 一个简单的 OCR API 服务器,使用 Docker 和 Heroku 部署非常容易。
- onnx-go- Go 接口到开放神经网络交换 (ONNX)。
- probab- 概率分布函数。贝叶斯推断。纯 Go 语言编写。
- randomforest- 易于使用的 Go 语言随机森林库。
- regommend- 推荐和协同过滤引擎。
- shield- 具有灵活的分词器和存储后端的 Go 语言贝叶斯文本分类器。
- tfgo- 易于使用的 TensorFlow 绑定:简化了官方 TensorFlow Go 绑定的使用。在 Go 中定义计算图,加载并执行在 Python 中训练的模型。
- Varis- Golang 神经网络。
消息传递
实现消息传递系统的库。- ami- 基于 Redis Cluster Streams 的可靠队列的 Go 客户端。
- amqp- Go RabbitMQ 客户端库。
- APNs2- 用于 Go 的 HTTP/2 Apple 推送通知提供程序 - 向 iOS、tvOS、Safari 和 OSX 应用程序发送推送通知。
- Asynq- 一个基于 Redis 构建的简单、可靠、高效的 Go 分布式任务队列。
- backlite- 类型安全、持久化、嵌入式任务队列和后台作业运行器,支持 SQLite。
- Beaver- 一个实时消息服务器,用于在 Web 和移动应用程序中构建可扩展的应用内通知、多人游戏和聊天应用程序。
- Bus- 用于内部通信的极简消息总线实现。
- Centrifugo- Go 中的实时消息传递(Websockets 或 SockJS)服务器。
- Chanify- 一个推送通知服务器,可向您的 iOS 设备发送消息。
- Commander- 一个高级的事件驱动型消费者/生产者,支持各种“方言”,例如 Apache Kafka。
- Confluent Kafka Golang 客户端- confluent-kafka-go 是 Confluent 的 Golang 客户端,用于 Apache Kafka 和 Confluent 平台。
- dbus- D-Bus 的原生 Go 绑定。
- drone-line- 使用二进制文件、docker 或 Drone CI 发送 Line 通知。
- emitter- 使用 Go 的方式发出事件,支持通配符、谓词、取消功能以及许多其他优点。
- event- 模式观察者的实现。
- EventBus- 具有异步兼容性的轻量级事件总线。
- gaurun-client- 用 Go 编写的 Gaurun 客户端。
- Glue- 强大的 Go 和 Javascript Socket 库(Socket.io 的替代方案)。
- go-eventbus- 用于 Go 的简单事件总线包。
- Go-MediatR- 一个受 csharp MediatR 库启发,用于在事件驱动架构中处理中介者模式和简化的 CQRS 模式的库。
- go-mq- 具有声明式配置的 RabbitMQ 客户端。
- go-notify- freedesktop 通知规范的原生实现。
- go-nsq- NSQ 的官方 Go 包。
- go-res- 用于构建 REST/实时服务的软件包,其中客户端使用 NATS 和 Resgate 无缝同步。
- go-vitotrol- Viessmann Vitotrol Web 服务的客户端库。
- GoEventBus- 一个速度极快、内存中运行、无锁的事件总线库
- Gollum- 一个 n:m 多路复用器,它从不同的源收集消息,并将它们广播到一组目标。
- golongpoll- 一个 HTTP 长轮询服务器库,使 Web 发布/订阅变得简单。
- gopush-cluster- gopush-cluster 是一个 go push 服务器集群。
- gorush- 使用 APNs2 和 google GCM 的推送通知服务器。
- gosd- 一个用于调度何时向通道分发消息的库。
- guble- 使用推送通知(Google Firebase 云消息传递、Apple 推送通知服务、短信)以及 WebSocket 的消息服务器,提供 REST API,具有分布式操作和消息持久性。
- hare- 一个用户友好的库,用于发送消息和监听 TCP 套接字。
- hub- 一个用于 Go 应用程序的消息/事件中心,使用发布/订阅模式,并支持类似 rabbitMQ 交换机的别名。
- hypermatch- 一个非常快速高效的 Go 库,用于将事件与大量规则进行匹配
- jazz- 一个简单的 RabbitMQ 抽象层,用于队列管理以及消息的发布和消费。
- machinery- 基于分布式消息传递的异步任务队列/作业队列。
- mangos- Nanomsg(“可扩展协议”)的纯 Go 实现,具有传输互操作性。
- melody- 用于处理 websocket 会话的极简框架,包括广播和自动 ping/pong 处理。
- Mercure- 使用 Mercure 协议分发服务器发送的更新的服务器和库(基于 Server-Sent Events 构建)。
- messagebus- messagebus 是一个 Go 语言的简单异步消息总线,非常适合在进行事件溯源、CQRS、DDD 时用作事件总线。
- NATS Go 客户端- NATS 的 Go 客户端
- nsq-event-bus- NSQ 主题和通道的小型封装器。
- oplog- 用于 REST API 的通用 oplog/复制系统。
- pubsub- 一个简单的 go pubsub 包。
- Quamina- 用于过滤消息和事件的快速模式匹配。
- rabbitroutine- 一个轻量级的库,用于处理 RabbitMQ 的自动重连和发布重试。该库考虑到了重连后需要在 RabbitMQ 中重新声明实体。
- rabbus- 一个对 AMQP 交换机和队列的小型封装器。
- rabtap- RabbitMQ 瑞士军刀式命令行应用程序。
- RapidMQ- RapidMQ 是一个轻量级且可靠的库,用于管理本地消息队列。
- Ratus- Ratus 是一个 RESTful 异步任务队列服务器。
- redisqueue- redisqueue 提供了一个使用 Redis 流的队列的生产者和消费者。
- rmqconn- RabbitMQ 重连。amqp.Connection 和 amqp.Dial 的封装。允许在连接断开时进行重连,而无需强制调用 Close() 方法关闭连接。
- sarama- Apache Kafka 的 Go 库。
- Uniqush-Push- 基于 Redis 的统一推送服务,用于向移动设备发送服务器端通知。
- varmq- 一个与存储无关的消息队列和工作池,用于并发 Go 程序。
- Watermill- 高效处理消息流。构建事件驱动型应用程序,支持事件溯源、基于消息的 RPC 和 Saga。可以使用 Kafka 或 RabbitMQ 等传统发布/订阅实现,也可以使用 HTTP 或 MySQL binlog。
- zmq4- ZeroMQ 版本 4 的 Go 接口。也适用于 版本 3 和 版本 2。
微软办公软件
- unioffice- 纯 go 库,用于创建和处理 Office Word (.docx)、Excel (.xlsx) 和 Powerpoint (.pptx) 文档。微软 Excel
用于处理 Microsoft Excel 的库。- cellwalker- 通过单元格名称虚拟遍历 Excel 单元格。
- excelize- 用于读取和写入 Microsoft Excel™ (XLSX) 文件的 Golang 库。
- exl- 用 Go 编写的 Excel 结构体绑定。(仅支持 Go 1.18 及以上版本)
- go-excel- 一个简单轻便的读取器,用于将类似 related-db 的 Excel 文件读取为表格。
- xlsx- 用于简化 Go 程序中读取最新版本 Microsoft Excel 使用的 XML 格式的库。
- xlsx- 在 Go 程序中快速安全地读取/更新现有 Microsoft Excel 文件。
Microsoft Word
用于处理 Microsoft Word 的库。- godocx- 用于读取和写入 Microsoft Word (Docx) 文件的库。
各种各样的
依赖注入
用于处理依赖注入的库。- alice- Golang 的附加依赖注入容器。
- autowire- 使用泛型和反射进行依赖注入。
- boot-go- 为 Go 开发人员提供基于组件的开发,并使用反射进行依赖注入。
- componego- 一个基于组件的依赖注入框架,允许动态替换依赖项,而无需在测试中重复编写代码。
- cosban/di- 一个基于代码生成的依赖注入连接工具。
- di- Go 编程语言的依赖注入容器。
- dig- 一个基于反射的 Go 依赖注入工具包。
- dingo- 一个基于 Guice 的 Go 依赖注入工具包。
- do- 一个基于泛型的依赖注入框架。
- fx- 一个基于依赖注入的 Go 应用程序框架(基于 dig 构建)。
- Go-Spring- 一个受 Spring Boot 启发的高性能 Go 框架,提供依赖注入、自动配置和生命周期管理,同时保持 Go 的简洁性和效率。
- gocontainer- 简单的依赖注入容器。
- godi- 为 Go 提供 Microsoft 风格的依赖注入,支持作用域生命周期和泛型。
- goioc/di- Spring 风格的依赖注入容器。
- GoLobby/Container- GoLobby Container 是一个轻量级但功能强大的 Go 编程语言 IoC 依赖注入容器。
- gontainer- Go 项目的依赖注入服务容器。
- gontainer/gontainer- 一个基于 YAML 的 Go 依赖注入容器。它支持依赖项的作用域,并能自动检测循环依赖。Gontainer 是并发安全的。
- HnH/di- 专注于简洁 API 和灵活性的 DI 容器库。
- kinit- 可自定义的依赖注入容器,具有全局模式、级联初始化和 panic 安全终结功能。
- kod- 一个基于泛型的 Go 依赖注入框架。
- linker- 一个基于反射的依赖注入和控制反转库,支持组件生命周期。
- nject- 一个类型安全、反射的框架,用于库、测试、http 端点和服务启动。
- ore- 轻量级、通用且简单的依赖注入 (DI) 容器。
- parsley- 一个灵活且模块化的基于反射的依赖注入库,具有作用域上下文和代理生成等高级功能,专为大规模 Go 应用程序而设计。
- wire- Golang 的严格运行时依赖注入。
项目布局
一套非官方的项目结构模式。- ardanlabs/service- 一个用于构建生产级可扩展 Web 服务应用程序的入门套件。
- cookiecutter-golang- 一个 Go 应用程序样板模板,用于快速启动遵循生产最佳实践的项目。
- go-blueprint- 允许用户使用流行的框架快速启动一个 Go 项目。
- go-module- 用 Go 编写的典型模块的模板。
- go-sample- 一个包含真实代码的 Go 应用程序项目示例布局。
- go-starter- 一个具有明确设计理念、可用于生产环境的 RESTful JSON 后端模板,与 VSCode DevContainers 高度集成。
- go-todo-backend- 使用模块化项目布局的产品微服务的 Go Todo 后端示例。
- goapp- 一个用于构建和开发 Go Web 应用程序/服务的有主见的指南。
- gobase- 一个简单的 golang 应用程序框架,包含真实 golang 应用程序的基本设置。
- golang-standards/project-layout- Go 生态系统中常见的历史和新兴项目布局模式集合。注意:尽管组织名称中包含“golang-standards/project-layout”,但它们并不代表官方的 Go 语言标准,更多信息请参见此 issue。尽管如此,某些人可能会发现这些布局很有用。
- golang-templates/seed- Go 应用程序 GitHub 存储库模板。
- goxygen- 几秒钟内使用 Go 和 Angular、React 或 Vue 生成现代 Web 项目。
- insidieux/inizio- 带插件的 Golang 项目布局生成器。
- kickstart.go- 极简的单文件 Go HTTP 服务器模板,不依赖第三方。
- modern-go-application- 应用现代实践的 Go 应用程序样板和示例。
- nunu- Nunu 是一个用于构建 Go 应用程序的脚手架工具。
- pagoda- 用 Go 构建的快速、简单的全栈 Web 开发入门套件。
- scaffold- Scaffold 生成一个 Go 项目初始布局,让您可以专注于实现业务逻辑。
- wangyoucao577/go-project-layout- 一套关于如何构建 Go 项目布局的实践和讨论。
字符串
用于处理字符串的库。- bexp- Go 实现的 Brace Expansion 机制,用于生成任意字符串。
- caps- 一个大小写转换库。
- go-formatter- 实现用花括号 {} 包围的替换字段格式字符串。
- gobeam/Stringy- 字符串操作库,用于将字符串转换为驼峰式、蛇形式、烤肉串式/slugify 等。
- strcase- 标准库 strings/bytes 包的不区分大小写的实现。
- strutil- 字符串实用程序。
- sttr- 跨平台的命令行应用程序,用于对字符串执行各种操作。
- xstrings- 从其他语言移植过来的实用字符串函数集合。
未分类
这些图书馆之所以放在这里,是因为其他类别似乎都不合适。- anagent- 极简的、可插拔的 Golang evloop/timer 处理程序,支持依赖注入。
- antch- 一个快速、强大且可扩展的网络爬虫和抓取框架。
- archives- 一个跨平台、多格式的 Go 库,用于处理归档和压缩格式,具有统一的 API,并且作为与 io/fs 兼容的虚拟文件系统。
- autoflags- Go 包,用于从结构体字段自动定义命令行标志。
- avgRating- 根据威尔逊得分方程计算平均得分和评分。
- banner- 为您的 Go 应用程序添加漂亮的横幅。
- base64Captcha- Base64captch 支持数字、字母、算术、音频和数字-字母验证码。
- basexx- 将数字字符串转换为各种进制,以及在各种进制之间进行转换。
- battery- 跨平台、标准化的电池信息库。
- bitio- 高度优化的 Go 位级读取器和写入器。
- browscap_go- 用于 浏览器功能项目 的 GoLang 库。
- captcha- captcha 包提供了一个易于使用、不带偏见的 API 用于生成验证码。
- common- 服务器框架的库。
- conv- conv 包提供 Go 类型之间的快速直观转换。
- datacounter- 用于 readers/writer/http.ResponseWriter 的 Go 计数器。
- fake-useragent- 一个使用 Golang 编写的、基于真实世界数据库的最新简易用户代理模拟工具
- faker- Go 的随机伪数据和结构体生成器。
- ffmt- 美化人类数据展示。
- gatus- 自动化服务健康仪表板。
- go-commandbus- 一个轻量级且可插拔的 Go 命令总线。
- go-commons-pool- Golang 的通用对象池。
- go-openapi- 用于解析和利用 open-api 模式的软件包集合。
- go-resiliency- golang 的弹性模式。
- go-unarr- RAR、TAR、ZIP 和 7z 归档文件的解压缩库。
- gofakeit- 用 Go 编写的随机数据生成器。
- gommit- 分析 git 提交消息,确保它们遵循定义的模式。
- gopsutil- 用于检索进程和系统利用率(CPU、内存、磁盘等)的跨平台库。
- gosh- 提供 Go 统计处理程序、结构体和测量方法。
- gosms- 您自己的 Go 本地短信网关,可用于发送短信。
- gotoprom- 官方 Prometheus 客户端的类型安全指标构建器包装库。
- gountries- 公开国家和行政区划数据的软件包。
- gtree- 提供 CLI、软件包和 Web,用于从 Markdown 或以编程方式创建树输出和目录。
- health- 一个简单而灵活的 Go 健康检查库。
- health- 易于使用、可扩展的健康检查库。
- healthcheck- 一个有主见且并发的 RESTful 服务健康检查 HTTP 处理程序。
- hostutils- 一个用于打包和解包 FQDN 列表的 golang 库。
- indigo- 使用 Sonyflake 并采用 Base58 编码的分布式唯一 ID 生成器。
- lk- 一个简单的 golang 许可库。
- llvm- 用于在纯 Go 中与 LLVM IR 交互的库。
- metrics- 用于指标检测和 Prometheus 展示的库。
- morse- 用于摩尔斯电码与摩尔斯电码之间相互转换的库。
- numa- NUMA 是一个用 Go 语言编写的实用库。它可以帮助我们编写一些支持 NUMA 的代码。
- pdfgen- 用于从 Json 请求生成 PDF 的 HTTP 服务。
- persian- Go 语言中的一些波斯语实用程序。
- purego- 一个无需 Cgo 即可从 Go 调用 C 函数的库。
- sandid- 地球上的每一粒沙子都有自己的 ID。
- shellwords- 一个 Golang 库,用于根据 UNIX Bourne shell 的单词解析规则操作字符串。
- shortid- 分布式生成超短、唯一、非连续、URL友好的ID。
- shoutrrr- 通知库,提供对各种消息服务的轻松访问,如 slack、mattermost、gotify 和 smtp 等。
- sitemap-format- 一个简单的站点地图生成器,带有一些语法糖。
- stateless- 一个用于创建状态机的流畅库。
- stats- 监控 Go MemStats 和系统统计信息,例如内存、交换空间和 CPU 使用情况,并通过 UDP 发送到您想要的任何位置,用于日志记录等。
- turtle- Go 的表情符号。
- url-shortener- 一个现代、强大且稳健的 URL 缩短微服务,支持 MySQL。
- VarHandler- 生成样板 http 输入和输出处理。
- varint- 比标准库中提供的变长整数编码器/解码器速度更快。
- xdg- FreeDesktop.org (xdg) 在 Go 中实现的规范。
- xkg- X 键盘抓取器。
- xz- 用于读取和写入 xz 压缩文件的纯 golang 包。
用于处理人类语言的库。
另请参阅文本处理和文本分析。
语言检测
- detectlanguage- Go 语言检测 API 客户端。支持批量请求、短语或单个单词的语言检测。
- getlang- 快速自然语言检测包。
- guesslanguage- 用于确定 Unicode 文本的自然语言的函数。
- lingua-go- 一个精准的自然语言检测库,适用于长文本和短文本。支持检测混合语言文本中的多种语言。
- whatlanggo- Go 语言的自然语言检测包。支持 84 种语言和 24 种文字(例如拉丁文、西里尔文等书写系统)。
形态分析器
- go-stem- Porter词干提取算法的实现。
- go2vec- word2vec 嵌入的读取器和实用函数。
- golibstemmer- Snowball libstemmer 库的 Go 绑定,包括 porter 2。
- gosentiwordnet- 使用 Sentiwordnet 词典的 Go 语言情感分析器。
- govader- VADER 情感分析 的 Go 实现。
- govader-backend- GoVader的微服务实现。
- kagome- 用纯 Go 语言编写的日语形态分析器。
- libtextcat- libtextcat C 库的 Cgo 绑定。保证与 2.2 版本兼容。
- nlp- 支持 LSA(潜在语义分析)的 Go 自然语言处理库。
- paicehusk- Paice/Husk 词干提取算法的 Golang 实现。
- porter- 这是 Martin Porter 用 C 语言实现的 Porter 词干提取算法的一个相当直接的移植版本。
- porter2- 速度非常快的 Porter 2 词干提取器。
- RAKE.go- 快速自动关键词提取算法 (RAKE) 的 Go 移植版。
- snowball- Snowball 词干提取器移植版(cgo 封装),适用于 Go 语言。提供词干提取功能 Snowball 原生功能。
- spaGO- Go 语言编写的自包含机器学习和自然语言处理库。
- spelling-corrector- 一个西班牙语拼写纠错器,或者创建你自己的拼写纠错器。
蛞蝓过滤器
- go-slugify- 制作支持多种语言的漂亮 slug。
- slug- 支持多种语言的 URL 友好型 slugify。
- Slugify- 一个处理字符串的 Go slugify 应用程序。
分词器
- gojieba- 这是 jieba 的 Go 实现,jieba 是一个中文分词算法。
- gotokenizer- 一个基于字典和Bigram语言模型的Golang分词器。(目前仅支持中文分词)
- gse- Go 高效文本分割;支持英语、中文、日语等。
- MMSEGO- 这是 MMSEG 的 Go 实现,MMSEG 是一种中文分词算法。
- segment- 用于执行 Unicode 文本分割的 Go 库,如 Unicode 标准附件 #29 中所述。
- sentences- 句子分词器:将文本转换为句子列表。
- shamoji- shamoji 是一个用 Go 编写的单词过滤包。
- stemmer- Go 编程语言的 Stemmer 包。包括英语和德语词干提取器。
- textcat- 用于基于 n-gram 的文本分类的 Go 包,支持 utf-8 和原始文本。
翻译
- ctxi18n- 具有简洁 API、复数化、插值和 fs.FS 支持的上下文感知型 i18n。YAML 语言环境定义基于 Rails i18n。
- go-i18n- 用于处理本地化文本的软件包和配套工具。
- go-mystem- Yandex.Mystem 的 CGo 绑定 - 俄语词法分析器。
- go-pinyin- 中文汉字到汉语拼音转换器。
- go-words- 一个用于 Golang 项目的单词表和文本资源库。
- gotext- Go 的 GNU gettext 实用程序。
- iuliia-go- 以各种可能的方式将西里尔字母转写为拉丁字母。
- spreak- 基于 gettext 背后的概念的灵活的 Go 语言翻译和人性化库。
- t- 另一个用于 golang 的 i18n 包,遵循 GNU gettext 风格,支持 .po/.mo 文件:tT (gettext)、tN (ngettext) 等。它还包含一个 cmd 工具 xtemplate,可以从 text/html 模板中提取消息作为 pot 文件。
音译
- enca- libenca 的最小 cgo 绑定,用于检测字符编码。
- go-unidecode- Unicode 文本的 ASCII 音译。
- gounidecode- Go 的 Unicode 转写器(也称为 unidecode)。
- transliterator- 提供单向字符串音译,并支持特定语言的音译规则。
人脉网络
用于处理网络各层的库。- arp- arp 包实现了 RFC 826 中描述的 ARP 协议。
- bart- bart 软件包提供了一个平衡路由表 (BART),用于非常快速的 IP 到 CIDR 查找等。
- buffstreams- 通过 TCP 轻松传输协议缓冲区数据。
- canopus- CoAP 客户端/服务器实现(RFC 7252)。
- cidranger- Go 的快速 IP 到 CIDR 查找。
- cloudflared- Cloudflare Tunnel 客户端(以前称为 Argo Tunnel)。
- dhcp6- dhcp6 软件包实现了 RFC 3315 中描述的 DHCPv6 服务器。
- dns- 用于处理 DNS 的 Go 库。
- dnsmonster- 被动式 DNS 捕获/监控框架。
- easytcp- 一个用 Go (Golang) 编写的轻量级 TCP 框架,内置消息路由。EasyTCP 可以帮助您轻松、快速、便捷地构建 TCP 服务器。
- ether- 用于发送和接收以太网帧的跨平台 Go 包。
- ethernet- ethernet 包实现了 IEEE 802.3 以太网 II 帧和 IEEE 802.1Q VLAN 标签的编组和解组。
- event- 用 Golang 编写的简单 I/O 事件通知库。
- fasthttp- fasthttp 包是 Go 的快速 HTTP 实现,速度比 net/http 快 10 倍。
- fortio- 负载测试库和命令行工具,高级回显服务器和 Web UI。允许指定每秒查询次数负载,并记录延迟直方图和其他有用统计信息,并将其绘制成图表。支持 TCP、HTTP 和 gRPC。
- ftp- ftp 包实现了 RFC 959 中描述的 FTP 客户端。
- ftpserverlib- 功能齐全的 FTP 服务器库。
- fullproxy- 一个功能齐全、可脚本化和可守护进程配置的代理和枢纽工具包,支持 SOCKS5、HTTP、原始端口和反向代理协议。
- fwdctl- 一个简单直观的 CLI,用于管理 Linux 服务器上的 IPTables 转发。
- gaio- 高性能异步 I/O 网络,适用于 Proactor 模式的 Golang。
- gev- gev 是一个基于 Reactor 模式的轻量级、快速的非阻塞 TCP 网络库。
- gldap- gldap 提供了一个 LDAP 服务器实现,您可以为其 LDAP 操作提供处理程序。
- gmqtt- Gmqtt 是一个灵活、高性能的 MQTT 代理库,它完全实现了 MQTT 协议 V3.1.1。
- gnet- gnet 是一个高性能、轻量级、非阻塞、事件驱动的网络框架,完全用 Go 编写。
- gnet- gnet 是一个高性能的网络框架,尤其适用于游戏服务器。
- gNxI- 一套使用 gNMI 和 gNOI 协议的网络管理工具。
- go-getter- Go 库,用于使用 URL 从各种来源下载文件或目录。
- go-multiproxy- 一个用于通过代理池发送 HTTP 请求的库,提供容错、负载均衡、自动重试、Cookie 管理等功能,可通过替换 http.Get/Post 或直接使用 http.Client RoundTripper 来实现。
- go-pcaplite- 轻量级实时数据包捕获库,支持 HTTPS SNI 提取。
- go-powerdns- Golang 的 PowerDNS API 绑定。
- go-sse- HTML 服务器发送事件的 Go 客户端和服务端实现。
- go-stun- STUN 客户端的 Go 实现(RFC 3489 和 RFC 5389)。
- gobgp- 用 Go 编程语言实现的 BGP。
- gopacket- 用于数据包处理的 Go 库,带有 libpcap 绑定。
- gopcap- libpcap 的 Go 封装。
- GoProxy- 一个使用 Go 创建自定义 HTTP/HTTPS 代理服务器的库。
- goshark- goshark 包使用 tshark 解码 IP 数据包并创建数据结构来分析数据包。
- gosnmp- 用于执行 SNMP 操作的原生 Go 库。
- gotcp- 用于快速编写 tcp 应用程序的 Go 包。
- grab- 用于管理文件下载的 Go 包。
- graval- 实验性 FTP 服务器框架。
- gws- 支持 AsyncIO 的高性能 WebSocket 服务器和客户端。
- HTTPLab- HTTPLabs 允许您检查 HTTP 请求并伪造响应。
- httpproxy- HTTP 代理处理程序和拨号器。
- iplib- 用于处理 IP 地址(net.IP、net.IPNet)的库,其灵感来源于 Python 的 ipaddress 和 Ruby 的 ipaddr
- jazigo- Jazigo 是一个用 Go 编写的工具,用于检索多个网络设备的配置。
- kcp-go- KCP - 快速可靠的 ARQ 协议。
- kcptun- 基于 KCP 协议的极其简单快速的 UDP 隧道。
- lhttp- 功能强大的 WebSocket 框架,让您更轻松地构建即时通讯服务器。
- linkio- 用于读写接口的网络链路速度模拟。
- llb- 这是一个非常简单但速度很快的代理服务器后端。它可用于快速重定向到预定义域名,且无需内存分配,响应速度也很快。
- mdns- 用 Golang 编写的简单 mDNS(多播 DNS)客户端/服务器库。
- mqttPaho- Paho Go 客户端提供了一个 MQTT 客户端库,用于通过 TCP、TLS 或 WebSocket 连接到 MQTT 代理。
- natiu-mqtt- 一个极其简单、不分配内存、底层实现的 MQTT,非常适合嵌入式系统。
- nbio- 纯 Go 1000k+ 连接解决方案,支持 tls/http1.x/websocket,基本兼容 net/http,具有高性能、低内存成本、非阻塞、事件驱动、易于使用等特点。
- net- 此存储库包含补充的 Go 网络库。
- netpoll- 字节跳动开发的高性能无阻塞 I/O 网络框架,专注于 RPC 场景。
- NFF-Go- 用于快速开发云和裸机高性能网络功能的框架(原名 YANFF)。
- nodepass- 一个安全、高效的 TCP/UDP 隧道解决方案,它使用预先建立的 TCP/QUIC/WebSocket 或 HTTP/2 连接,跨越网络限制提供快速、可靠的访问。
- peerdiscovery- 纯 Go 库,用于使用 UDP 多播进行跨平台本地对等发现。
- portproxy- 一个简单的 TCP 代理,可为不支持 CORS 的 API 添加 CORS 支持。
- psql-wire- PostgreSQL 服务器连接协议。构建您自己的服务器并开始提供连接服务。
- publicip- publicip 包返回您的公网 IPv4 地址(互联网出口)。
- quic-go- 纯 Go 中 QUIC 协议的实现。
- sdns- 一个高性能、递归的 DNS 解析器服务器,支持 DNSSEC,专注于保护隐私。
- sftp- sftp 软件包实现了 <https://filezilla-project.org/specs/draft-ietf-secsh-filexfer-02.txt> 中描述的 SSH 文件传输协议。
- ssh- 用于构建 SSH 服务器的高级 API(封装了 crypto/ssh)。
- sslb- 这是一个超级简单的负载均衡器,只是一个旨在实现某种性能的小项目。
- stun- RFC 5389 STUN 协议的 Go 实现。
- tcpack- tcpack 是一个基于 TCP 的应用层协议,用于在 go 程序中打包和解包字节流。
- tspool- 一个 TCP 库,使用工作池来提高性能并保护您的服务器。
- tun2socks- 由 gVisor TCP/IP 协议栈支持的 tun2socks 的纯 Go 实现。
- utp- Go uTP 微传输协议实现。
- vssh- 用于构建基于 SSH 协议的网络和服务器自动化的 Go 库。
- water- 简单的 TUN/TAP 库。
- webrtc- WebRTC API 的纯 Go 实现。
- winrm- Go WinRM 客户端,用于在 Windows 机器上远程执行命令。
- xtcp- TCP 服务器框架,支持同时进行全双工通信、优雅关闭和自定义协议。
HTTP 客户端
用于发出 HTTP 请求的库。- axios4go- 一个受 Axios 启发的 Go HTTP 客户端库,提供了一个简单直观的 API 来进行 HTTP 请求。
- azuretls-client- 一个易于使用的 HTTP 客户端,100% 使用 Go 编写,用于伪造 TLS/JA3 和 HTTP2 指纹。
- fast-shot- 使用 Go 最快最简单的 HTTP 客户端,以极快的精度击中您的 API 目标。
- gentleman- 功能齐全的插件驱动型 HTTP 客户端库。
- go-cleanhttp- 轻松获取 stdlib HTTP 客户端,该客户端不与其他客户端共享任何状态。
- go-http-client- 轻松便捷地进行 http 调用。
- go-ipmux- 一个基于多个源 IP 地址复用 HTTP 请求的库。
- go-otelroundtripper- Go http.RoundTripper,用于发出 HTTP 请求的开放遥测指标。
- go-req- 声明式 golang HTTP 客户端。
- go-retryablehttp- Go 中的可重试 HTTP 客户端。
- go-zoox/fetch- 一个功能强大、轻量级、易于使用的 Http 客户端,其灵感来源于 Web Fetch API。
- Grequest- 一个简单轻量的 Go 语言 HTTP 请求包,基于强大的 net/http 库。
- grequests- 一个用 Go 语言编写的、对伟大的、著名的 Requests 库的“克隆”。
- heimdall- 一个增强的 http 客户端,具有重试和 Hystrix 功能。
- httpretry- 为默认的 Go HTTP 客户端添加重试功能。
- pester- Go HTTP 客户端调用,支持重试、退避和并发。
- req- 带有 Black Magic 的简单 Go HTTP 客户端(代码更少,效率更高)。
- request- Go 语言的 HTTP 客户端。如果您有 axios 或 requests 的使用经验,您一定会喜欢它。无需第三方依赖。
- requests- 为 Gophers 提供的 HTTP 请求库。它使用 context.Context,并且不隐藏底层 net/http.Client,因此与标准的 Go API 兼容。此外,它还包含测试工具。
- resty- 受 Ruby rest-client 启发的 Go 的简单 HTTP 和 REST 客户端。
- rq- 一个更友好的 golang 标准库 HTTP 客户端接口。
- sling- Sling 是一个 Go HTTP 客户端库,用于创建和发送 API 请求。
- surf- 高级 HTTP 客户端,支持 HTTP/1.1、HTTP/2、HTTP/3 (QUIC)、SOCKS5 代理和浏览器级 TLS 指纹识别。
- tls-client- net/http.Client 类似 HTTP 客户端,可以选择用于请求的特定客户端 TLS 指纹。
OpenGL
用于在 Go 中使用 OpenGL 的库。- gl- 用于 OpenGL 的 Go 绑定(通过 glow 生成)。
- glfw- GLFW 3 的 Go 绑定。
- go-glmatrix- glMatrix 库的 Go 移植版。
- goxjs/gl- Go 跨平台 OpenGL 绑定(OS X、Linux、Windows、浏览器、iOS、Android)。
- goxjs/glfw- Go 跨平台 glfw 库,用于创建 OpenGL 上下文和接收事件。
- mathgl- 纯 Go 数学包,专门用于 3D 数学,灵感来自 GLM。
ORM
实现了对象关系映射或数据映射技术的库。- bob- 用于 Go 的 SQL 查询构建器和 ORM/Factory 生成器。SQLBoiler 的继任者。
- bun- SQL优先的Golang ORM。go-pg的后继者。
- cacheme- 基于模式的 Go 语言 Redis 缓存/记忆化框架。
- CQL- 基于 GORM 构建,添加了基于自动生成的代码的编译时验证查询。
- ent- 一个用于 Go 的实体框架。简单而强大的 ORM,用于建模和查询数据。
- go-dbw- 一个封装数据库操作的简单软件包。
- go-firestorm- 一个简单的 Google/Firebase Cloud Firestore ORM。
- go-sql- 一个简单的 MySQL ORM。
- go-sqlbuilder- 一个灵活而强大的 SQL 字符串构建器库,外加一个零配置 ORM。
- go-store- 简单快速的基于 Redis 的 Go 键值存储库。
- golobby/orm- 简单、快速、类型安全、通用的 orm,让开发者更快乐。
- GORM- 出色的 Golang ORM 库,旨在对开发者友好。
- gormt- 将 Mysql 数据库转换为 golang gorm 结构。
- gorp- Go 关系持久化,Go 的 ORM 类库。
- grimoire- Grimoire 是一个用于 Go 语言的数据库访问层和验证工具。(支持:MySQL、PostgreSQL 和 SQLite3)。
- lore- 简单轻量级的 Go 伪 ORM/伪结构映射环境。
- marlow- 从项目结构体生成 ORM,以确保编译时安全性。
- pop/soda- MySQL、PostgreSQL 和 SQLite 的数据库迁移、创建、ORM 等。
- Prisma- Prisma Client Go,Go 的类型安全数据库访问。
- reform- 基于非空接口和代码生成的更好的 Go ORM。
- rel- 用于 Golang 的现代数据库访问层 - 可测试、可扩展,并精心打造为简洁优雅的 API。
- SQLBoiler- ORM 生成器。生成功能丰富、速度极快的 ORM,并根据您的数据库模式进行定制。
- upper.io/db- 通过使用封装成熟数据库驱动程序的适配器,为与不同的数据源交互提供单一接口。
- XORM- 简单而强大的 Go ORM。(支持:MySQL、MyMysql、PostgreSQL、Tidb、SQLite3、MsSql 和 Oracle)。
- Zoom- 基于 Redis 构建的极速数据存储和查询引擎。
软件包管理
官方依赖项和包管理工具- go 模块- 模块是源代码交换和版本控制的基本单元。go 命令直接支持模块操作,包括记录和解析对其他模块的依赖关系。
用于包和依赖项管理的非官方库。
- gup- 更新通过“go install”安装的二进制文件。
- modup- 用于 Go 依赖项更新的终端 UI,具有过时模块检测和选择性升级功能。
- syft- 一个 CLI 工具和 Go 库,用于从容器镜像和文件系统生成软件物料清单 (SBOM)。
表现
- ebpf-go- 提供用于加载、编译和调试 eBPF 程序的实用程序。
- go-instrument- 自动为所有方法和函数添加 span。
- jaeger- 一个分布式追踪系统。
- mm-go- golang 的通用手动内存管理。
- pixie- 不支持通过 eBPF 对 Golang 应用程序进行插桩跟踪。
- profile- Go 的简单性能分析支持包。
- statsviz- Go 应用程序运行时统计信息的实时可视化。
- tracer- 简单、轻量级的跟踪。
查询语言
- api-fu- 全面的 GraphQL 实现。
- dasel- 使用命令行选择器查询和更新数据结构。功能类似于 jq/yq,但支持 JSON、YAML、TOML 和 XML,且无任何运行时依赖。
- gojsonq- 一个简单的 Go 包,用于查询 JSON 数据。
- goven- 适用于任何数据库模式的即插即用查询语言。
- gqlgen- 基于 go generate 的 graphql 服务器库。
- grapher- 一个利用 Go 泛型的 GraphQL 字段构建器,具有额外的实用工具和功能。
- graphql- 专注于易用的 GraphQL 服务器。
- graphql-go- Go 语言的 GraphQL 实现。
- gws- Apollos 的“GraphQL over Websocket”客户端和服务器实现。
- jsonpath- 一个基于 JSONPath 语法检索 JSON 部分的查询库。
- jsonql- Golang 中的 JSON 查询表达式库。
- jsonslice- 带有高级过滤器的 Jsonpath 查询。
- mql- 模型查询语言 (mql) 是一种用于数据库模型的查询语言。
- play- 一个 TUI 游乐场,用于试验您最喜欢的程序,例如 grep、sed、awk、jq 和 yq。
- rql- REST API 的资源查询语言。
- rqp- REST API 查询解析器。查询中直接支持过滤、验证以及 AND 和 OR 操作。
- straf- 轻松将 Golang 结构体转换为 GraphQL 对象。
反射
- copy- 用于快速复制不同类型结构体的软件包。
- Deepcopier- 用于 Go 的简单结构体复制。
- go-deepcopy- 快速深度复制库。
- goenum- 一个基于泛型和反射的通用枚举结构,允许您快速定义枚举并使用一组有用的默认方法。
- gotype- Golang 源代码解析器,用法类似于 reflect 包。
- gpath- 用于简化使用 Go 的反射表达式访问结构体字段的库。
- objwalker- 使用反射遍历 go 对象。
- reflectpro- Go 的调用者、复制者、获取者和设置者。
- reflectutils- 用于处理反射的辅助工具:结构体标签解析;递归遍历;从字符串填充值。
资源嵌入
- debme- 从现有的 embed.FS 子目录创建 embed.FS。
- embed- embed 包提供对嵌入在正在运行的 Go 程序中的文件的访问。
- rebed- 从 Go 1.16 的 embed.FS 类型重新创建文件夹结构和文件
- vfsgen- 生成一个静态实现给定虚拟文件系统的 vfsdata.go 文件。
科学与数据分析
用于科学计算和数据分析的库。- assocentity- assocentity 包返回单词与给定实体之间的平均距离。
- bradleyterry- 提供用于成对比较的 Bradley-Terry 模型。
- calendarheatmap- 受 Github 贡献活动启发,用纯 Go 编写的日历热图。
- chart- 一个简单的 Go 语言图表绘制库。支持多种图表类型。
- dataframe-go- 用于机器学习和统计的 Dataframe(类似于 pandas)。
- decimal- decimal 包实现了任意精度十进制浮点运算。
- evaler- 简单的浮点运算表达式求值器。
- ewma- 指数加权移动平均线。
- geom- 用于 golang 的 2D 几何体。
- go-dsp- Go 的数字信号处理。
- go-estimate- Go 中的状态估计和过滤算法。
- go-gt- 用“Go”语言编写的图论算法。
- go-hep- 一套用于轻松执行高能物理分析的库和工具。
- godesim- 具有简单 API 的基于事件的仿真扩展/多变量 ODE 求解器框架。
- goent- GO 实现的熵度量。
- gograph- 一个提供数学图论和算法的 golang 通用图库。
- gonum- Gonum 是一套用于 Go 编程语言的数值库。它包含用于矩阵、统计、优化等的库。
- gonum/plot- gonum/plot 提供了一个用于在 Go 中构建和绘制图表的 API。
- goraph- 纯围棋图论库(数据结构、算法可视化)。
- gosl- 用于线性代数、FFT、几何、NURBS、数值方法、概率、优化、微分方程等的 Go 科学库。
- GoStats- GoStats 是一个开源的 GoLang 数学统计库,主要用于机器学习领域,它涵盖了大多数统计度量函数。
- graph- 基本图算法库。
- jsonl-graph- 用于操作支持 graphviz 的 JSONL 图的工具。
- ode- 支持扩展状态和基于通道的迭代停止条件的常微分方程 (ODE) 求解器。
- orb- 2D 几何类型,支持裁剪、GeoJSON 和 Mapbox 矢量瓦片。
- pagerank- 用 Go 实现的加权 PageRank 算法。
- piecewiselinear- 微型线性插值库。
- PiHex- 十六进制数 Pi 的“Bailey-Borwein-Plouffe”算法的实现。
- Poly- 一个用于构建生物体的 Go 包。
- rootfinding- 用于寻找二次函数根的求根算法库。
- sparse- 用于线性代数的 Go 稀疏矩阵格式,支持科学和机器学习应用,与 gonum 矩阵库兼容。
- stats- 统计包,包含 Golang 标准库中缺少的常用函数。
- streamtools- 用于处理数据流的通用图形工具。
- TextRank- 用 Golang 实现的 TextRank,具有可扩展的功能(摘要、加权、短语提取)和多线程(goroutine)支持。
- topk- 基于 HeavyKeeper 算法的滑动窗口和常规 top-K 草图。
- triangolatte- 2D 三角剖分库。允许将线和多边形(均基于点)转换为 GPU 可识别的语言。
安全
用于增强应用程序安全性的库。- acmetool- ACME(Let's Encrypt)客户端工具,具有自动续订功能。
- acopw-go- 用于 Go 的小型加密安全密码生成器包。
- acra- 网络加密代理,用于保护基于数据库的应用程序免受数据泄露:强大的选择性加密、SQL 注入防护、入侵检测系统。
- age- 一个简单、现代且安全的加密工具(以及 Go 库),具有小的显式密钥、无配置选项和 UNIX 风格的可组合性。
- argon2-hashing- Go 的 argon2 包的轻量级封装,与 Go 的标准库 Bcrypt 和 simple-scrypt 包非常相似。
- autocert- 自动配置 Let's Encrypt 证书并启动 TLS 服务器。
- BadActor- 内存中、应用程序驱动的 jailer,以 fail2ban 的精神构建。
- beelzebub- 一个安全的低代码蜜罐框架,利用人工智能进行系统虚拟化。
- booster- 快速 initramfs 生成器,支持全盘加密。
- Cameradar- 用于远程破解监控摄像头 RTSP 流的工具和库。
- certificates- 一个用于生成 TLS 证书的有特定要求的工具。
- CertMagic- 成熟、强大且功能强大的 ACME 客户端集成,用于完全托管的 TLS 证书颁发和续订。
- Coraza- 企业级、兼容 modsecurity 和 OWASP CRS 的 WAF 库。
- dongle- 一个简单、语义化且对开发者友好的 golang 包,用于编码和解码以及加密和解密。
- encid- 对加密的整数 ID 进行编码和解码。
- entpassgen- 熵密码生成器,具有丰富的命令行参数,可安全地生成随机字符串,包括数字、密码以及使用晦涩的字典单词与符号和数字混合构建的密码。
- firewalld-rest- 一个用于在 linux 服务器上动态更新 firewalld 规则的 rest 应用程序。
- go-generate-password- 可在命令行界面或作为库使用的密码生成器。
- go-htpasswd- Apache htpasswd Go 解析器。
- go-password-validator- 基于原始加密熵值的密码验证器。
- go-peer- 一个用于创建安全匿名去中心化系统的软件库。
- go-yara- Go Bindings for YARA,YARA 是“恶意软件研究人员(以及其他所有人)的模式匹配瑞士军刀”。
- goArgonPass- Argon2 密码哈希和验证,旨在与现有的 Python 和 PHP 实现兼容。
- goSecretBoxPassword- 一个可能有点偏执的软件包,用于安全地哈希和加密密码。
- Interpol- 用于模糊测试和渗透测试的基于规则的数据生成器。
- lego- 纯 Go ACME 客户端库和 CLI 工具(用于 Let's Encrypt)。
- luks.go- 用于管理 LUKS 分区的纯 Golang 库。
- memguard- 一个纯 Go 库,用于处理内存中的敏感值。
- multikey- 基于 Shamir 秘密共享算法的 n-out-of-N 密钥加密/解密框架。
- nacl- NaCL API 集的 Go 实现。
- optimus-go- 使用 Knuth 算法进行 ID 哈希和混淆。
- passlib- 面向未来的密码哈希库。
- passwap- 为不同的密码哈希算法提供统一的实现
- qrand- ANU 量子数 (AQN) API 的客户端,提供量子力学安全的随机数据。
- SafeDep/vet- 防止恶意开源软件包。
- secret- 防止您的密钥泄露到日志、std* 等中。
- secure- Go 的 HTTP 中间件,可快速实现一些安全优势。
- secureio- 基于 XChaCha20-poly1305、ECDH 和 ED25519 的 io.ReadWriteCloser 的密钥交换+身份验证+加密包装器和多路复用器。
- simple-scrypt- 具有简单、直观的 API 和内置自动成本校准的 Scrypt 包。
- ssh-vault- 使用 SSH 密钥进行加密/解密。
- sslmgr- 通过对 acme/autocert 的高级封装,轻松创建 SSL 证书。
- teler-waf- teler-waf 是一个 Go HTTP 中间件,它提供 teler IDS 功能,用于防御基于 Web 的攻击,并提高基于 Go 的 Web 应用程序的安全性。它具有高度可配置性,并且易于集成到现有的 Go 应用程序中。
- themis- 用于解决典型数据安全任务(安全数据存储、安全消息传递、零知识证明认证)的高级加密库,支持 14 种语言,最适合多平台应用程序。
- urusai- Urusai(日语意为“嘈杂”)是一个 Go 语言实现的随机 HTTP/DNS 流量噪声生成器,它通过在浏览时创建数字烟雾来帮助保护隐私。
序列化
用于二进制序列化的库和工具。- bambam- 用于从 Go 生成 Cap'n Proto schemas 的工具。
- bel- 从 Go 结构体/接口生成 TypeScript 接口。对 JSON RPC 很有用。
- binstruct- 用于将数据映射到结构体的 Golang 二进制解码器。
- cbor- 小巧、安全、易用的 CBOR 编码和解码库。
- colfer- Colfer 二进制格式的代码生成器。
- csvutil- 高性能、符合惯用的 CSV 记录编码和解码为原生 Go 结构。
- elastic- 无论如何,在运行时转换不同类型之间的切片、映射或任何其他未知值。
- fixedwidth- 固定宽度文本格式(支持 UTF-8)。
- fwencoder- Go 的固定宽度文件解析器(编码和解码库)。
- go-capnproto- 用于 Go 的 Cap'n Proto 库和解析器。
- go-codec- 高性能、功能丰富、惯用的 msgpack、cbor 和 json 编码、解码和 rpc 库,支持基于运行时的 OR 代码生成。
- go-csvlib- 高级且功能丰富的 CSV 序列化/反序列化库。
- goprotobuf- 以库和协议编译器插件的形式为 Google 的协议缓冲区提供 Go 支持。
- gotiny- 高效的 Go 序列化库,gotiny 的速度几乎与生成代码的序列化库一样快。
- jsoniter- 高性能,100% 兼容的“encoding/json”直接替换。
- php_session_decoder- 用于处理 PHP 会话格式和 PHP 序列化/反序列化函数的 GoLang 库。
- pletter- 一种用于消息代理的 proto 消息封装标准方法。
- structomap- 用于从静态结构轻松动态生成映射的库。
- unitpacking- 用于将单位向量打包成尽可能少字节的库。
服务器应用程序
- algernon- 内置支持 Lua、Markdown、GCSS 和 Amber 的 HTTP/2 Web 服务器。
- Caddy- Caddy 是一个易于配置和使用的替代 HTTP/2 Web 服务器。
- consul- Consul 是一个用于服务发现、监控和配置的工具。
- cortex-tenant- Prometheus 远程写入代理,可根据指标标签添加 Cortex 租户 ID 标头。
- devd- 面向开发者的本地 Web 服务器。
- discovery- 一个用于弹性中间层负载均衡和故障转移的注册表。
- dudeldu- 一个简单的 SHOUTcast 服务器。
- Easegress- 一个具有可观测性和可扩展性的云原生高可用性/高性能流量编排系统。
- Engity 的 Bifröst- 高度可定制的 SSH 服务器,提供多种方式授权用户如何执行其会话(本地或在容器中)。
- etcd- 用于共享配置和服务发现的高可用键值存储。
- Euterpe- 自托管音乐流媒体服务器,内置 Web UI 和 REST API。
- Fider- Fider 是一个开放平台,用于收集和整理客户反馈。
- Flagr- Flagr 是一个开源的功能标记和 A/B 测试服务。
- flipt- 一个用 Go 和 Vue.js 编写的独立功能开关解决方案
- go-feature-flag- 一个简单、完整且轻量级的自托管功能标志解决方案,100% 开源。
- go-proxy-cache- 一个使用 Redis 编写的简单反向代理,带有缓存功能。
- gondola- 一个基于 YAML 的 golang 反向代理。
- lets-proxy2- 用于处理 https 的反向代理,可从 lets-encrypt 快速颁发证书。
- minio- Minio 是一个分布式对象存储服务器。
- Moxy- Moxy 是一个简单的模拟和代理应用程序服务器,您可以创建模拟端点,并在端点不存在模拟时代理请求。
- nginx-prometheus- Nginx 日志解析器和导出器到 Prometheus。
- nsq- 一个实时分布式消息平台。
- OpenRun- 开源的 Google Cloud Run 和 AWS App Runner 替代方案。轻松在团队内部署内部工具。
- pocketbase- PocketBase 是一个实时后端,它由一个文件中的嵌入式数据库 (SQLite) 组成,具有实时订阅、内置身份验证管理等功能。
- protoxy- 一个将 JSON 请求体转换为 Protocol Buffers 的代理服务器。
- psql-streamer- 将 PostgreSQL 数据库事件流式传输到 Kafka。
- riemann-relay- 用于负载均衡 Riemann 事件和/或将其转换为 Carbon 的中继。
- RoadRunner- 高性能 PHP 应用服务器、负载均衡器和进程管理器。
- SFTPGo- 功能齐全且高度可配置的 SFTP 服务器,可选支持 FTP/S 和 WebDAV。它可以服务于本地文件系统和云存储后端,例如 S3 和 Google Cloud Storage。
- Trickster- HTTP 反向代理缓存和时间序列加速器。
- wd-41- 一个 (w)eb (d)开发服务器,可在文件更改时自动实时重新加载。
- Wish- 轻松创建 SSH 应用!
流处理
用于流处理和响应式编程的库和工具。- go-etl- 一个用于数据源提取、转换和加载 (ETL) 的轻量级工具包。
- go-streams- Go 流处理库。
- goio- 一个 Golang 的 IO、Stream、Fiber 实现,灵感来自优秀的 Scala 库 cats 和 fs2。
- gostream- 受 Java Streams API 启发的类型安全的流处理库。
- machine- 用于编写和生成流工作进程的 Go 库,具有内置指标和可追溯性。
- nibbler- 一个用于微批处理的轻量级软件包。
- ro- 响应式编程:面向事件驱动应用程序的声明式和可组合式 API。
- stream- Go Stream,类似于 Java 8 Stream:支持 Filter/Map/FlatMap/Peek/Sorted/ForEach/Reduce 等功能……
- StreamSQL- 一个用于实时数据处理的轻量级流式 SQL 引擎。
模板引擎
用于模板和词法分析的库和工具。- ego- 轻量级模板语言,允许您用 Go 编写模板。模板会被翻译成 Go 代码并编译。
- extemplate- 围绕 html/template 的小型包装器,允许轻松进行基于文件的模板继承。
- fasttemplate- 简单快速的模板引擎。替换模板占位符的速度比 text/template 快 10 倍。
- gomponents- 纯 Go 语言编写的 HTML 5 组件,看起来像这样:func(name string) g.Node { return Div(Class("headline"), g.Textf("Hi %v!", name)) }。
- got- 一个受 Hero 和 Fasttemplate 启发的 Go 代码生成器。它具有包含文件、自定义标签定义、注入 Go 代码、语言翻译等功能。
- goview- Goview 是一个基于 golang html/template 的轻量级、极简且符合 Go 语言习惯的模板库,用于构建 Go Web 应用程序。
- htmgo- 使用 Go + htmx 构建简单且可扩展的系统
- jet- Jet 模板引擎。
- liquid- Shopify Liquid 模板的 Go 实现。
- maroto- 一种使用 Maroto 创建 PDF 的方法。Maroto 基于 Bootstrap 并采用 gofpdf。快速且简单。
- pongo2- 类似 Django 的 Go 模板引擎。
- quicktemplate- 快速、强大且易于使用的模板引擎。将模板转换为 Go 代码,然后进行编译。
- Razor- Golang 的 Razor 视图引擎。
- Soy- Go 的 Closure 模板(又名 Soy 模板),遵循 官方规范。
- sprout- 用于 Go 模板的实用模板函数。
- 待定- 一种非常简单的创建带有占位符的文本模板的方法 - 公开额外的内置 Git 仓库元数据。
- templ- 一种具有强大开发者工具的 HTML 模板语言。
- templator- 一个用于 Go 的类型安全的 HTML 模板渲染引擎。
测试
用于测试代码库和生成测试数据的库。测试框架
- apitest- 简单且可扩展的行为测试库,适用于基于 REST 的服务或 HTTP 处理程序,支持模拟外部 http 调用和渲染序列图。
- arch-go- Go 项目的架构测试工具。
- assert- 与原生 Go 测试一起使用的基本断言库,提供用于自定义断言的构建模块。
- baloo- 轻松实现富有表现力且功能全面的端到端 HTTP API 测试。
- be- 极简的通用测试断言库。
- biff- 分岔测试框架,与 BDD 兼容。
- charlatan- 用于生成测试的虚假接口实现的工具。
- commander- 用于在 Windows、Linux 和 OSX 上测试 cli 应用程序的工具。
- cupaloy- 适用于您的测试框架的简单快照测试插件。
- dbcleaner- 用于测试目的的数据库清理工具,灵感来自 Ruby 中的 database_cleaner。
- dft- 轻量级、零依赖的 Docker 容器,用于测试(或其他用途)。
- dsunit- 用于 SQL、NoSQL 和结构化文件的数据存储测试。
- embedded-postgres- 在 Linux、OSX 或 Windows 上本地运行真正的 Postgres 数据库,作为另一个 Go 应用程序或测试的一部分。
- endly- 声明式端到端功能测试。
- envite- 开发和测试环境管理框架。
- fixenv- 受 pytest fixtures 启发的 fixture 管理引擎。
- flute- HTTP 客户端测试框架。
- frisby- REST API 测试框架。
- gherkingen- BDD 样板生成器和框架。
- ginkgo- Go 的 BDD 测试框架。
- gnomock- 使用在 Docker 中运行的真实依赖项(数据库、缓存,甚至是 Kubernetes 或 AWS)进行集成测试,无需模拟。
- go-carpet- 用于在终端中查看测试覆盖率的工具。
- go-cmp- 用于在测试中比较 Go 值的软件包。
- go-hit- Hit 是一个用 golang 编写的 http 集成测试框架。
- go-httpbin- HTTP 测试和调试工具,具有各种客户端测试端点。
- go-mutesting- Go 源代码的突变测试。
- go-mysql-test-container- Golang MySQL 测试容器,用于帮助进行 MySQL 集成测试。
- go-snaps- Golang 中类似 Jest 的快照测试。
- go-test-coverage- 报告低于设定阈值的文件覆盖率的工具。
- go-testdeep- 非常灵活的 golang 深度比较,扩展了 go testing 包。
- go-testpredicate- 具有广泛诊断输出的测试谓词风格断言库。
- go-vcr- 记录和重放您的 HTTP 交互,以进行快速、确定性和准确的测试。
- goblin- 类似 Mocha 的 Go 测试框架。
- goc- Goc 是一个全面的 Go 编程语言覆盖率测试系统。
- gocheck- 比 gotest 更高级的测试框架。
- GoConvey- 具有 Web UI 和实时重载的 BDD 风格框架。
- gocrest- 用于 Go 断言的可组合的 hamcrest 类匹配器。
- godog- 用于 Go 的 Cucumber BDD 框架。
- gofight- Golang Router 框架的 API 处理程序测试。
- gogiven- 类似 YATSPEC 的 Go BDD 测试框架。
- gomatch- 为测试 JSON 与模式匹配而创建的库。
- gomega- 类似 Rspec 的匹配器/断言库。
- Gont- 用于测试和构建使用 Linux 命名空间的复杂网络拓扑的 Go 网络测试工具包。
- gospecify- 它提供了一种用于测试 Go 代码的 BDD 语法。任何使用过 rspec 等库的人都应该会感到熟悉。
- gosuite- 通过利用 Go1.7 的子测试,为“测试”带来具有设置/拆卸功能的轻量级测试套件。
- got- 一个令人愉悦的 golang 测试框架。
- gotest.tools- 一组用于增强 go 测试包并支持常见模式的软件包。
- Hamcrest- 一个用于声明式匹配器的流畅框架,当应用于输入值时,会产生自描述的结果。
- httpexpect- 简洁、声明式且易于使用的端到端 HTTP 和 REST API 测试。
- is- 用于 Go 的专业轻量级测试迷你框架。
- jsonassert- 用于验证 JSON 有效负载是否正确序列化的软件包。
- keploy- 通过 API 调用自动生成测试用例和数据模拟。
- omg.testingtools- 用于更改私有字段值以进行测试的简单库。
- restit- 用于帮助编写 RESTful API 集成测试的 Go 微框架。
- schema- 用于请求和响应中 JSON 模式的快速简便的表达式匹配。
- stop-and-go- 并发测试辅助工具。
- testcase- 行为驱动开发的惯用测试框架。
- testcerts- 在测试函数中动态生成自签名证书和证书颁发机构。
- testcontainers-go- 一个 Go 包,可简化创建和清理基于容器的依赖项的过程,从而用于自动化集成/冒烟测试。其简洁易用的 API 使开发人员能够以编程方式定义应在测试中运行的容器,并在测试完成后清理这些资源。
- testfixtures- 一个类似 Rails 的测试夹具的辅助工具,用于测试数据库应用程序。
- Testify- 标准 go 测试包的神圣扩展。
- testsql- 在测试之前从 SQL 文件生成测试数据,并在测试完成后清除它。
- testza- 功能齐全的测试框架,具有漂亮的彩色输出。
- trial- 快速简便的可扩展断言,无需引入太多样板代码。
- Tt- 简单而色彩丰富的测试工具。
- wstest- 用于对 websocket http.Handler 进行单元测试的 Websocket 客户端。
嘲笑
- connexions- 根据 OpenAPI 3.0 规范和文件,将多个 API 与有意义的响应、可配置的延迟和错误代码结合起来。
- counterfeiter- 用于生成独立模拟对象的工具。
- genmock- Go mocking 系统,带有用于构建接口方法调用的代码生成器。
- go-localstack- 用于在 AWS 测试中使用 localstack 的工具。
- go-sqlmock- 用于测试数据库交互的模拟 SQL 驱动程序。
- go-txdb- 主要用于测试目的的基于单事务的数据库驱动程序。
- gock- 简单易用的多功能 HTTP 模拟。
- gomock- Go 编程语言的模拟框架。
- govcr- Golang 的 HTTP mock:记录和重放 HTTP 交互以进行离线测试。
- hoverfly- 用于记录和模拟 REST/SOAP API 的 HTTP(S) 代理,具有可扩展的中间件和易于使用的 CLI。
- httpmock- 轻松模拟来自外部资源的 HTTP 响应。
- minimock- Go 接口的模拟生成器。
- mockery- 用于生成 Go 接口的工具。
- mockfs- 用于 Go 测试的模拟文件系统,具有错误注入和延迟模拟功能,基于 testing/fstest.MapFS 构建。
- mockhttp- Go http.ResponseWriter 的模拟对象。
- mooncake- 一种为多种用途生成模拟对象的简单方法。
- moq- 一个可以根据任何接口生成结构体的实用工具。该结构体可以在测试代码中用作接口的模拟对象。
- moxie- 在嵌入式结构上生成模拟方法。
- pgxmock- 一个实现了 pgx - PostgreSQL 驱动程序和工具包 的模拟库。
- timex- 一个便于测试的原生 time 包的替代品。
- xgo- 一个通用的 pureposed 函数模拟库。
模糊测试和增量调试/减少/缩小
Selenium 和浏览器控制工具
- cdp- 为 Chrome 调试协议提供类型安全的绑定,可用于实现该协议的浏览器或其他调试目标。
- chromedp- 一种驱动/测试 Chrome、Safari、Edge、Android Webview 和其他支持 Chrome 调试协议的浏览器的方法。
- playwright-go- 浏览器自动化库,可通过单个 API 控制 Chromium、Firefox 和 WebKit。
- rod- 一个 Devtools 驱动程序,使 Web 自动化和抓取变得容易。
注入失败
- failpoint- Golang 的 failpoints 实现。文本处理
用于解析和处理文本的库。另请参阅自然语言处理和文本分析。
格式化程序
- address- 处理地址表示、验证和格式化。
- align- 一个用于对齐文本的通用应用程序。
- bytes- 格式化和解析数字字节值(10K、2M、3G 等)。
- go-fixedwidth- 固定宽度文本格式化(带反射的编码器/解码器)。
- go-humanize- 将时间、数字和内存大小格式化为人类可读格式的工具。
- gotabulate- 使用 Go 轻松美化打印表格数据。
- sq- 将 SQL 数据库或 CSV 或 Excel 等文档格式中的数据转换为 JSON、Excel、CSV、HTML、Markdown、XML 和 YAML 等格式。
- textwrap- 在行尾自动换行。这是 Python 中 textwrap 模块的实现。
标记语言
- bafi- 使用模板将 JSON、BSON、YAML、XML 转换为任何格式的通用转换器。
- bbConvert- 将 bbCode 转换为 HTML,允许您添加对自定义 bbCode 标签的支持。
- blackfriday- Go 中的 Markdown 处理器。
- go-output-format- 在命令行应用程序中将 go 结构输出为多种格式(YAML/JSON 等)。
- go-toml- 用于 TOML 格式的 Go 库,具有查询支持和方便的 cli 工具。
- goldmark- 一个用 Go 编写的 Markdown 解析器。易于扩展,符合标准(CommonMark),结构良好。
- goq- 使用 struct 标签和 jQuery 语法声明式地反序列化 HTML(使用 GoQuery)。
- html-to-markdown- 将 HTML 转换为 Markdown。甚至可以处理整个网站,并且可以通过规则进行扩展。
- htmlquery- 一个用于 HTML 的 XPath 查询包,允许您通过 XPath 表达式从 HTML 文档中提取数据或进行评估。
- htmlyaml- Go 中 YAML 的 HTML 富文本渲染。
- htree- 遍历、导航、过滤和以其他方式处理 html.Node 对象的树。
- mxj- 将 XML 编码/解码为 JSON 或 map[string]interface{};提取带有点表示法路径和通配符的值。可替代 x2j 和 j2x 包。
- toml- TOML 配置格式(带反射的编码器/解码器)。
解析器/编码器/解码器
- allot- 用于 CLI 工具和机器人的占位符和通配符文本解析。
- codetree- 解析缩进代码(python、pixy、scarlet 等),并返回树结构。
- commonregex- Go 语言常用正则表达式集合。
- did- Go 中的 DID(去中心化标识符)解析器和字符串生成器。
- doi- Go 中的文档对象标识符 (doi) 解析器。
- editorconfig-core-go- Go 的 Editorconfig 文件解析器和操作器。
- encdec- 该软件包为编码器和解码器提供通用接口。
- go-fasttld- 高性能有效顶级域名 (eTLD) 提取模块。
- go-nmea- Go 语言的 NMEA 解析器库。
- go-querystring- 用于将结构体编码为 URL 查询参数的 Go 库。
- go-vcard- 解析和格式化 vCard。
- godump- 轻松美化打印任何 GO 变量,是 Go 的 fmt.Printf("%#v") 的替代方案。
- godump (goforj)- 使用 Laravel/Symfony 风格的转储、完整的类型信息、彩色 CLI 输出、循环检测和私有字段访问,以美观的方式打印 Go 结构体。
- gofeed- 在 Go 中解析 RSS 和 Atom 源。
- gographviz- 解析 Graphviz DOT 语言。
- gonameparts- 将人类姓名解析为各个姓名部分。
- ltsv- 高性能 LTSV(标签制表符分隔值) Go 读取器。
- normalize- 对模糊文本进行清理、规范化和比较。
- parseargs-go- 能够理解引号和反斜杠的字符串参数解析器。
- prattle- 简单高效地扫描和解析 LL(1) 语法。
- sh- Shell 解析器和格式化程序。
- tokenizer- 将任何字符串、切片或无限缓冲区解析为任何标记。
- vdf- 一个用 Go 编写的 Valve 数据格式(称为 vdf)的词法分析器和解析器。
- when- 具有可插拔规则的自然英语和俄语日期/时间解析器。
- xj2go- 将 xml 或 json 转换为 go 结构体。
正则表达式
- genex- 统计正则表达式并将其扩展为所有匹配的字符串。
- go-wildcard- 简单轻量级的通配符模式匹配。
- goregen- 用于从正则表达式生成随机字符串的库。
- regroup- 使用结构标签和自动解析将名为 groups 的正则表达式匹配到 go 结构中。
- rex- 正则表达式构建器。
卫生设施
- bluemonday- HTML Sanitizer。
- gofuckyourself- 一个基于清理的 Go 脏话过滤器。
刮削器
- colly- 适用于 Gophers 的快速优雅的抓取框架。
- dataflowkit- 用于将网站转换为结构化数据的 Web 抓取框架。
- go-recipe- 一个用于从网站抓取食谱的软件包。
- go-sitemap-parser- 用于解析站点地图的 Go 语言库。
- GoQuery- GoQuery 为 Go 语言带来了类似于 jQuery 的语法和一组功能。
- pagser- Pagser 是一个简单、可扩展、可配置的解析器,它基于 goquery 和 struct 标签,用于 golang 爬虫将 html 页面解析和反序列化为结构体。
- Tagify- 从给定的源生成一组标签。
- walker- 无缝地从任何来源获取分页数据。包含简单且高性能的 API 抓取功能。
- xurls- 从文本中提取网址。
RSS
- podcast- 使用 Golang 编写的符合 iTunes 和 RSS 2.0 标准的播客生成器实用/杂项
- go-runewidth- 获取字符或字符串固定宽度的函数。
- kace- 涵盖常见首字母缩写词的常见大小写转换。
- lancet- 一个功能全面的、类似 Lodash 的 Go 语言实用工具库。
- petrovich- Petrovich 是一个库,它可以根据给定的语法格对俄语名称进行词形变化。
- radix- 快速字符串排序算法。
- TySug- 关于键盘布局的替代建议。
- w2vgrep- 一个使用词嵌入的语义搜索工具,用于查找语义相似的匹配项。例如,搜索“death”将找到“dead”、“killing”、“murder”。
第三方 API
用于访问第三方 API 的库。- airtable- 用于 Airtable API 的 Go 客户端库。
- anaconda- Twitter 1.1 API 的 Go 客户端库。
- appstore-sdk-go- 非官方的 AppStore Connect API Golang SDK。
- aws-encryption-sdk-go- AWS 加密 SDK的非官方 Go SDK 实现。
- aws-sdk-go- Go 编程语言的官方 AWS SDK。
- bqwriter- 用于将数据高速写入 Google BigQuery 的高级 Go 库。
- brewerydb- 用于访问 BreweryDB API 的 Go 库。
- cachet- Cachet(开源状态页面系统) 的 Go 客户端库。
- circleci- 用于与 CircleCI 的 API 交互的 Go 客户端库。
- clarifai- 用于与 Clarifai API 交互的 Go 客户端库。
- codeship-go- 用于与 Codeship 的 API v2 进行交互的 Go 客户端库。
- coinpaprika-go- 用于与 Coinpaprika 的 API 交互的 Go 客户端库。
- device-check-go- 用于与 iOS DeviceCheck API v1 交互的 Go 客户端库。
- discordgo- Discord 聊天 API 的 Go 绑定。
- disgo- Discord API 的 Go API 封装器。
- dusupay-sdk-go- 非官方的 Dusupay 支付网关 API Go 客户端
- ethrpc- 以太坊 JSON RPC API 的 Go 绑定。
- facebook- 支持 Facebook Graph API 的 Go 库。
- fasapay-sdk-go- 非官方的 Fasapay 支付网关 XML API 客户端,适用于 Golang。
- fcm- 用于 Firebase 云消息传递的 Go 库。
- gads- Google Adwords 非官方 API。
- gcm- 用于 Google Cloud Messaging 的 Go 库。
- geo-golang- 用于访问 Google Maps、MapQuest、Nominatim、OpenCage、Bing、Mapbox 和 OpenStreetMap 地理编码/反向地理编码 API 的 Go 库。
- github- 用于访问 GitHub REST API v3 的 Go 库。
- githubql- 用于访问 GitHub GraphQL API v4 的 Go 库。
- go-atlassian- 用于访问 Atlassian Cloud 服务(Jira、Jira Service Management、Jira Agile、Confluence、Admin Cloud)的 Go 库
- go-aws-news- 用于从 AWS 获取最新信息的 Go 应用程序和库。
- go-chronos- 用于与 Chronos 作业调度器交互的 Go 库
- go-gerrit- 用于 Gerrit Code Review 的 Go 客户端库。
- go-hacknews- 用于 HackerNews API 的 Tiny Go 客户端。
- go-here- 基于 HERE 位置 API 的 Go 客户端库。
- go-hibp- “Have I Been Pwned” API 的简单 Go 绑定。
- go-imgur- 用于 imgur 的 Go 客户端库
- go-jira- 用于 Atlassian JIRA 的 Go 客户端库
- go-lark- 一个易于使用的非官方 SDK,适用于 飞书 和 Lark 开放平台。
- go-marathon- 用于与 Mesosphere 的 Marathon PAAS 交互的 Go 库。
- go-myanimelist- 用于访问 MyAnimeList API 的 Go 客户端库。
- go-openai- 用于 Go 的 OpenAI ChatGPT、DALL·E、Whisper API 库。
- go-openproject- 用于与 OpenProject API 交互的 Go 客户端库。
- go-postman-collection- 用于 Postman Collections 的 Go 模块(与 Insomnia 兼容)。
- go-redoc- 使用 ReDoc 的 Go 嵌入式 OpenAPI/Swagger 文档 UI。
- go-restcountries- 用于 REST Countries API 的 Go 库。
- go-salesforce- 用于与 Salesforce REST API 交互的 Go 客户端库。
- go-sophos- 用于 Sophos UTM REST API 的 Go 客户端库,零依赖项。
- go-swagger-ui- 包含预编译的 Swagger UI 的 Go 库,用于提供 swagger json。
- go-telegraph- Telegraph 发布平台 API 客户端。
- go-trending- 用于访问 Github 上的 热门仓库 和 开发者 的 Go 库。
- go-unsplash- 用于 Unsplash.com API 的 Go 客户端库。
- go-xkcd- xkcd API 的 Go 客户端。
- go-yapla- Yapla v2.0 API 的 Go 客户端库。
- goagi- 用于构建 Asterisk PBX agi/fastagi 应用程序的 Go 库。
- goami2- Asterisk PBX 的 AMI v2 库。
- GoFreeDB- 一个基于 Google Sheets 的 Golang 库,提供通用且简单的数据库抽象。
- gogtrends- Google Trends 非官方 API。
- golang-tmdb- The Movie Database API v3 的 Golang 封装。
- golyrics- Golyrics 是一个 Go 库,用于从 Wikia 网站获取音乐歌词数据。
- gomalshare- Go 库 MalShare API malshare.com
- GoMusicBrainz- Go MusicBrainz WS2 客户端库。
- google- 为 Go 自动生成的 Google API。
- google-analytics- 用于轻松生成 Google Analytics 报告的简单封装器。
- google-cloud- Google Cloud APIs Go 客户端库。
- gopaapi5- Amazon Product Advertising API 5.0的Go客户端库。
- gopensky- OpenSKY Network live 的 API(空域 ADS-B 和 Mode S 数据)的 Go 客户端实现。
- gosip- SharePoint 客户端库。
- gostorm- GoStorm 是一个 Go 库,它实现了在 Go 中编写 Storm spout 和 Bolt 与 Storm shell 通信所需的通信协议。
- hipchat- 该项目实现了 Hipchat API 的 golang 客户端库。
- hipchat (xmpp)- 一个用于通过 XMPP 与 HipChat 通信的 golang 包。
- igdb- Internet Game Database API 的 Go 客户端。
- ip2location-io-go- IP2Location.io API 的 Go 封装 IP2Location.io。
- jokeapi-go- JokeAPI 的 Go 客户端。
- lark- Feishu/Lark Open API Go SDK,支持所有 Open API 和事件回调。
- lastpass-go- 用于 LastPass API 的 Go 客户端库。
- libgoffi- 用于原生 libffi 集成的库适配器工具箱
- Medium- 用于 Medium 的 OAuth2 API 的 Golang SDK。
- megos- 用于访问 Apache Mesos 集群的客户端库。
- minio-go- 用于 Amazon S3 兼容云存储的 Minio Go 库。
- mixpanel- Mixpanel 是一个用于跟踪事件并将 Mixpanel 配置文件更新从您的 go 应用程序发送到 Mixpanel 的库。
- newsapi-go- NewsAPI 的 Go 客户端。
- openaigo- 适用于 Go 的 OpenAI GPT3/GPT3.5 ChatGPT API 客户端库。
- patreon-go- 用于 Patreon API 的 Go 库。
- paypal- PayPal 支付 API 的封装器。
- playlyfe- Playlyfe Rest API Go SDK。
- pushover- Pushover API 的 Go 封装。
- rawg-sdk-go- 用于 RAWG 视频游戏数据库 API 的 Go 库
- shopify- 用于向 Shopify API 发出 CRUD 请求的 Go 库。
- simples3- 一个使用 REST 和 V4 签名的简单易用的 AWS S3 库,用 Go 编写。
- slack- Go 中的 Slack API。
- smite- 用于封装 Smite 游戏 API 的 Go 包。
- spotify- 用于访问 Spotify WEB API 的 Go 库。
- steam- 用于与 Steam 游戏服务器交互的 Go 库。
- stripe- Stripe API 的 Go 客户端。
- swag- 无注释,一个简单的 Go 封装库,用于创建与 Swagger 2.0 兼容的 API。支持大多数路由框架,例如内置路由、gin、chi、mux、echo、httprouter、fasthttp 等。
- textbelt- textbelt.com txt 消息 API 的 Go 客户端。
- Trello- Trello API 的 Go 封装。
- TripAdvisor- TripAdvisor API 的 Go 封装。
- tumblr- Tumblr v2 API 的 Go 封装。
- uptimerobot- Uptime Robot v2 API 的 Go 封装和命令行客户端。
- vl-go- 围绕 VerifID 身份验证层 API 的 Go 客户端库。
- webhooks- GitHub 和 Bitbucket 的 Webhook 接收器。
- wit-go- wit.ai HTTP API 的 Go 客户端。
- ynab- YNAB API 的 Go 包装器。
- zooz- Zooz API 的 Go 客户端。
公用设施
一些实用工具,让您的生活更轻松。- 摘要- 用于消除业务逻辑中的样板代码的抽象和实用程序。
- apm- 具有 HTTP API 的 Golang 应用程序的进程管理器。
- backscanner- 一个类似于 bufio.Scanner 的扫描器,但它从给定的位置开始,反向读取和返回行。
- bed- 一个用 Go 编写的类似 Vim 的二进制编辑器。
- blank- 验证或删除字符串中的空格和空白字符。
- bleep- 在 Go 中对任何一组操作系统信号执行任意数量的操作。
- boilr- 速度极快的 CLI 工具,用于从样板模板创建项目。
- boring- 简单的命令行 SSH 隧道管理器。
- changie- 自动化变更日志工具,用于准备版本发布,并提供许多自定义选项。
- chyle- 使用 git 仓库的变更日志生成器,具有多种配置可能性。
- circuit- 一个高效且功能齐全的类似 Hystrix 的 Go 实现的断路器模式。
- circuitbreaker- Go 中的断路器。
- clipboard- 📋 Go 中的跨平台剪贴板包。
- clockwork- 一个简单的 golang 假时钟。
- cmd- 用于在 osx、windows 和 linux 上执行 shell 命令的库。
- config-file-validator- 用于验证配置文件的跨平台工具。
- contem- 用于优雅关闭 Go 应用程序的 context.Context 替代品。
- cookie- Cookie 结构解析和辅助包。
- copy-pasta- 通用多工作站剪贴板,使用类似 S3 的后端进行存储。
- 国家/地区- 全面实施 ISO-3166-1、ISO-4217、ITU-T E.164、Unicode CLDR 和 IANA ccTLD 标准。
- countries- 在 Go 中处理国家/地区时所需的一切。
- create-go-app- 一个功能强大的 CLI,只需运行一个命令即可创建一个包含后端(Golang)、前端(JavaScript、TypeScript)和部署自动化(Ansible、Docker)的全新生产就绪项目。
- cryptgo- Crytpgo 是一个基于 TUI 的应用程序,完全用 Go 编写,用于实时监控和观察加密货币价格!
- ctop- 用于容器指标的 类似 Top 的 接口(例如 htop)。
- ctxutil- 一组用于上下文的实用函数。
- cvt- 轻松安全地将任何值转换为另一种类型。
- dbt- 一个用于从中央可信存储库运行自更新签名二进制文件的框架。
- Death- 使用信号管理 Go 应用程序关闭。
- debounce- 一个用 Go 编写的零分配防抖动程序。
- delve- Go 调试器。
- dive- 一个用于探索 Docker 镜像中每一层的工具。
- dlog- 编译时控制的日志记录器,可在不移除调试调用的情况下减小发布版本的大小。
- EaseProbe- 一个简单、独立、轻量级的工具,可以执行健康/状态检查守护进程,支持 HTTP/TCP/SSH/Shell/Client/... 探测,以及 Slack/Discord/Telegram/SMS... 通知。
- equalizer- Go 的配额管理器和速率限制器集合。
- ergo- 轻松管理运行在不同端口上的多个本地服务。
- evaluator- 基于 S 表达式动态计算表达式的值。它简单易用,易于扩展。
- Failsafe-go- Go 的容错和弹性模式。
- filetype- 用于通过检查魔数签名来推断文件类型的小软件包。
- filler- 使用“fill”标签填充结构体的小工具。
- filter- 提供 Go 数据的过滤、清理和转换。
- fzf- 用 Go 编写的命令行模糊查找器。
- generate- 对指定的路径或环境变量递归运行 go generate,并可通过正则表达式进行过滤。
- ghokin- 一个并行化的 Gherkin 格式化程序,没有外部依赖项(cucumber、behat 等)。
- git-time-metric- 简单、无缝、轻量级的 Git 时间跟踪。
- git-tools- 用于帮助管理 git 标签的工具。
- gitbatch- 在一个地方管理你的git仓库。
- gitcs- Git Commits Visualizer,CLI 工具,用于在本地计算机上可视化 Git 提交。
- go-actuator- 为基于 Go 的 Web 框架提供生产就绪功能。
- go-astitodo- 解析 GO 代码中的 TODO。
- go-bind-plugin- go:generate 工具,用于包装 golang 插件导出的符号(仅限 1.8)。
- go-bsdiff- 纯 Go bsdiff 和 bspatch 库及 CLI 工具。
- go-clip- 一款极简的 Mac 剪贴板管理器。
- go-convert- go-convert 包允许您将一个值转换为另一种类型。
- go-countries- 通过 ISO-3166 代码进行轻量级查找。
- go-dry- Go 的 DRY(不要重复自己)包。
- go-events- 一个 Go 事件和事件订阅包,类似于 WordPress 钩子函数。
- go-funk- 现代 Go 实用程序库,提供辅助函数(map、find、contains、filter、chunk、reverse 等)。
- go-health- Health 包简化了向服务添加健康检查的方式。
- go-httpheader- 用于将结构体编码为 Header 字段的 Go 库。
- go-lambda-cleanup- 一个用于删除未使用的或以前版本的 AWS Lambda 的 CLI。
- go-lock- go-lock 是一个锁库,实现了无饥饿的读写互斥锁和读写 trylock。
- go-pattern-match- 一个受 ts-pattern 启发的模式匹配库。
- go-pkg- 一个 go 工具包。
- go-problemdetails- 用于处理问题详情的 Go 包。
- go-qr- 一个原生、高质量且极简的二维码生成器。
- go-rate- Go 的定时速率限制器。
- go-sitemap-generator- 用 Go 编写的 XML Sitemap 生成器。
- go-trigger- Go 语言全局事件触发器,使用 id 注册事件,并从项目中的任何位置触发事件。
- go-tripper- Tripper 是一个 Go 的断路器包,允许你创建断路器并控制其状态。
- go-type- 提供 Go 类型库,用于存储/验证和传输 ISO-4217、ISO-3166 和其他类型。
- goback- Go 简单指数退避包。
- goctx- 以高性能获取上下文值。
- godaemon- 用于编写守护进程的实用程序。
- godropbox- 用于从 Dropbox 编写 Go 服务/应用程序的通用库。
- gofn- 使用泛型为 Go 1.18+ 编写的高性能实用函数。
- golarm- 带有系统事件的火灾报警器。
- golog- 简单轻便的 CLI 工具,用于跟踪您的任务时间。
- gopencils- 一个小型且简单的软件包,可以轻松使用 REST API。
- goplaceholder- 一个用于生成占位符图像的小型 golang 库。
- goreadability- 使用 Facebook Open Graph 和 arc90 的可读性提取网页摘要。
- goreleaser- 以尽可能快和容易的方式交付 Go 二进制文件。
- goreporter- 一个 Golang 工具,用于执行静态分析、单元测试、代码审查并生成代码质量报告。
- goseaweedfs- 具有几乎完整功能的 SeaweedFS 客户端库。
- gostrutils- 字符串操作和转换函数的集合。
- gotenv- 从 Go 中的 .env 或任何 io.Reader 加载环境变量。
- goval- 在 Go 中计算任意表达式。
- graterm- 提供在 Go 应用程序中执行有序(顺序/并发)优雅终止(又称关闭)的基本功能。
- grofer- 一个用 Golang 编写的系统和资源监控工具!
- gubrak- 一个提供语法糖的 Golang 实用工具库。它类似于 lodash,但适用于 Golang。
- handy- 包含许多实用工具和辅助工具,例如字符串处理程序/格式化程序和验证器。
- healthcheck- 一个简单而强大的 Kubernetes 就绪性测试。
- hostctl- 一个使用简单命令管理 /etc/hosts 的 CLI 工具。
- htcat- 并行和流水线式 HTTP GET 实用程序。
- hub- 为 git 命令添加额外功能,以便从终端与 github 进行交互。
- immortal- *nix 跨平台(操作系统无关)监管器。
- jet- Just Edit Text:一个快速而强大的工具,用于使用正则表达式查找和替换文件内容和名称。
- jsend- JSend 的 Go 实现。
- json-log-viewer- JSON 日志的交互式查看器。
- jump- Jump 通过学习你的习惯来帮助你更快地导航。
- just- 只是一组用于处理通用数据结构的实用函数。
- koazee- 受惰性求值和函数式编程启发而开发的库,可以简化数组的使用。
- lang- 通用的单行命令,用于处理变量、切片和映射,无需编写样板代码。
- lets-go- 一个 Go 模块,提供用于云原生 REST API 开发的常用工具。也包含 AWS 特有的工具。
- limiters- 用于 Golang 中分布式应用程序的速率限制器,具有可配置的后端和分布式锁。
- lo- 一个基于 Go 1.18+ 的类似 Lodash 的 Go 库,支持泛型(map、filter、contains、find 等)。
- loncha- 一个高性能的切片实用程序。
- lrserver- Go 的 LiveReload 服务器。
- mani- 帮助您管理多个存储库的 CLI 工具。
- mc- Minio Client 提供与 Amazon S3 兼容的云存储和文件系统交互所需的最小工具。
- mergo- 用于在 Golang 中合并结构体和映射的辅助工具。可用于配置默认值,避免编写繁琐的 if 语句。
- mimemagic- 纯 Go 语言编写的超高性能 MIME 类型嗅探库/实用程序。
- mimetype- 基于魔数的 MIME 类型检测软件包。
- minify- 用于 HTML、CSS、JS、XML、JSON 和 SVG 文件格式的快速压缩器。
- minquery- 支持高效分页的 MongoDB / mgo.v2 查询(使用游标从上次停止的地方继续列出文档)。
- moldova- 根据输入模板生成随机数据的实用程序。
- mole- 用于轻松创建 SSH 隧道的命令行应用程序。
- mongo-go-pagination- 官方 mongodb/mongo-go-driver 包的 Mongodb 分页功能,支持普通查询和聚合管道。
- mssqlx- 数据库客户端库,可代理任何主从/主主结构。轻量级设计,并具备自动负载均衡功能。
- multitick- 用于对齐股票代码的多路复用器。
- netbug- 轻松远程分析您的服务。
- nfdump- 读取 nfdump netflow 文件。
- nostromo- 用于构建强大别名的 CLI。
- okrun- 运行错误 steamroller。
- olaf- 用 Go 实现的 Twitter Snowflake。
- onecache- 支持多种后端存储(Redis、Memcached、文件系统等)的缓存库。
- 可选- 可选的结构体字段和变量。
- panicparse- 将相似的 goroutine 分组并对堆栈转储进行着色。
- pattern-match- 模式匹配库。
- peco- 简易交互式过滤工具。
- pgo- 为 PHP 社区提供的便捷函数。
- pm- 带有 HTTP API 的进程(即 goroutine)管理器。
- pointer- 包 pointer 包含用于简化基本类型可选字段创建的辅助例程。
- ptr- 提供从基本类型常量简化创建指针的函数的软件包。
- rate- 具有令牌桶和 AIMD 策略的高性能速率限制库。
- rclient- 一个可读性强、灵活、易于使用的 REST API 客户端。
- 发布- 用于 Keep-a-changelog 格式变更日志的 CLI。
- remote-touchpad- 通过智能手机控制鼠标和键盘。
- repeat- Go 实现的不同退避策略,可用于重试操作和心跳机制。
- request- Go HTTP Requests for Humans™。
- rerun- 当源代码更改时重新编译和重新运行 Go 应用程序。
- rest-go- 一个提供许多用于处理 REST API 的有用方法的软件包。
- retro- 方便的错误重试库,具有广泛的灵活性(退避策略、上限等)。
- retry- 最先进的功能机制,用于重复执行操作直到成功。
- retry- 一个简单但高度可配置的 Go 重试包。
- retry- 简单易用的 Go 重试机制包。
- retry- 一个非常简单的库,用于确保您的工作能够完成。
- retry-go- 用于重试机制的简单库。
- retry-go- 为 golang 简化和轻松的重试功能。
- robustly- 弹性地运行函数,捕获并重新启动 panic。
- rospo- 使用 Golang 构建的简单可靠的 SSH 隧道,内置 SSH 服务器。
- scan- 直接将 golang sql.Rows 扫描为结构体、切片或原始类型。
- scan- 使用泛型将 SQL 行扫描到任何类型。
- scany- 用于将数据库中的数据扫描到 Go 结构体等的库。
- serve- 随时随地为您提供静态 http 服务器。
- sesh- Sesh 是一个 CLI,可帮助您使用 zoxide 快速轻松地创建和管理 tmux 会话。
- set- 高性能且灵活的结构体映射和宽松的类型转换。
- shutdown- 用于处理 os.Signal 的应用程序关闭钩子。
- silk- 读取 silk netflow 文件。
- slice- 用于常见 Go 切片操作的类型安全函数。
- sliceconv- 原始类型之间的切片转换。
- slicer- 使切片操作更轻松。
- sorty- 快速并发/并行排序。
- sqlx- 在优秀的内置数据库/sql 包的基础上提供了一组扩展。
- sqlz- database/sql 包的扩展,添加了命名查询、结构扫描和批量操作。
- sshman- 用于管理多个远程服务器上 authorized_keys 文件的 SSH 管理器。
- stacktower- 将依赖关系图可视化为物理塔状结构,灵感来自 XKCD #2347。
- statiks- 快速、零配置的静态 HTTP 文件服务器。
- Storm- 用于 BoltDB 的简单而强大的工具包。
- structs- 实现操作结构体的简单函数。
- throttle- Throttle 是一个对象,它将在每个持续时间内执行一个操作。
- tik- 简单易用的 Go 语言计时轮包。
- tome- Tome 旨在对简单的 RESTful API 进行分页。
- toolbox- 切片、映射、多重映射、结构体、函数、数据转换工具。服务路由、宏评估器、分词器。
- UNIS- Go 中字符串实用程序的通用架构™。
- upterm- 一款供开发者通过网络安全地共享终端/tmux会话的工具。它非常适合远程结对编程、访问NAT/防火墙后的计算机、远程调试等等。
- usql- usql 是一个用于 SQL 数据库的通用命令行界面。
- util- 实用工具函数的集合。(字符串、并发、操作等)。
- watchhttp- 定期运行命令并将最新的 STDOUT 或其丰富的增量作为 HTTP 端点公开。
- wifiqr- Wi-Fi 二维码生成器。
- wuzz- 用于 HTTP 检查的交互式命令行工具。
- xferspdy- Xferspdy 提供 golang 中的二进制差异和补丁库。
- xpool- 又一个使用泛型的 golang 类型安全对象池。
- yogo- 从命令行检查 yopmail 邮件。
UUID
用于处理 UUID 的库。- fastuuid- 快速生成 UUIDv4 字符串或字节。
- goid- 生成和解析符合 RFC4122 标准的 V4 UUID。
- gouid- 只需一次分配即可生成加密安全的随机字符串 ID。
- guid- 用于 Go 的快速加密安全 Guid 生成器(比 uuid 快约 10 倍)。
- nanoid- 一个小型高效的 Go 唯一字符串 ID 生成器。
- sno- 紧凑、可排序且速度快的唯一 ID,带有嵌入式元数据。
- ulid- ULID(通用唯一字典序可排序标识符)的 Go 实现。
- uniq- 使用命令轻松创建安全、快速的唯一标识符。
- uuid- 使用快速或加密质量的随机节点标识符生成、编码和解码 UUID v1。
- uuid- 通用唯一标识符 (UUID) 的实现。支持 UUID 的创建和解析。是 satori uuid 的一个活跃维护的分支。
- uuid- 基于 RFC 4122 和 DCE 1.1 的 UUID Go 包:身份验证和安全服务。
- uuidcheck- 一个小型、无依赖的 Go 库,用于根据标准 RFC 4122 格式验证 UUID,并将 UUIDv7() 转换为 UTC 时间戳。
- wuid- 一个速度极快的全球唯一数字生成器。
- xid- Xid 是一个全局唯一的 ID 生成器库,可以直接在您的服务器代码中安全地使用。
验证
用于验证的库。- checkdigit- 提供校验位算法(Luhn、Verhoeff、Damm)和计算器(ISBN、EAN、JAN、UPC 等)。
- go-validator- 使用泛型的验证库。
- gody- :balloon: 一个轻量级的 Go 结构体验证器。
- govalid- 快速的、基于标签的结构体验证。
- govalidator- 用于字符串、数字、切片和结构体的验证器和清理器。
- govalidator- 使用简单的规则验证 Golang 请求数据。其设计灵感主要来源于 Laravel 的请求验证。
- hvalidhvalid 是一个用 Go 语言编写的轻量级验证库。它提供了一个自定义验证器接口和一系列常用的验证函数,帮助开发者快速实现数据验证。
- jio- jio 是一个类似于 joi 的 json 模式验证器。
- ozzo-validation- 支持对各种数据类型(结构体、字符串、映射、切片等)进行验证,验证规则可在常规代码结构中指定,且可配置和可扩展,而不是使用结构体标签。
- validate- 用于数据验证和过滤的 Go 包。支持验证 Map、Struct、Request(表单、JSON、url.Values、上传文件)数据以及更多功能。
- validate- 此软件包提供了一个用于为 Go 应用程序编写验证的框架。
- validator- Go 结构体和字段验证,包括跨字段、跨结构体、映射、切片和数组验证。
- Validator- 一个用 Go 编写的轻量级模型验证器。包含 VF:Min、Max、MinLength、MaxLength、Length、Enum、Regex。
- valix用于验证请求的 Go 包
- Zog- 一个受 Zod 启发的模式构建器,用于运行时值解析和验证。
版本控制
版本控制库。- cli- 一个开源的 GitLab 命令行工具,将 GitLab 的炫酷功能带到您的命令行。
- froggit-go- Froggit-Go 是一个 Go 库,允许对 VCS 提供程序执行操作。
- git2go- libgit2 的 Go 绑定。
- githooks- 每个仓库和共享的 Git hooks,具有版本控制和自动更新功能。
- go-git- 用纯 Go 语言实现的高度可扩展的 Git 版本。
- go-vcs- 在 Go 中操作和检查 VCS 存储库。
- hercules- 从 Git 存储库历史记录中获得高级见解。
- hgo- Hgo 是一组 Go 包,提供对本地 Mercurial 存储库的读取访问权限。
视频
用于处理视频的库。- gmf- FFmpeg av* 库的 Go 绑定。
- go-astiav- 为 GO 中的 ffmpeg 提供更好的 C 绑定。
- go-astisub- 操作 GO 中的字幕(.srt、.stl、.ttml、.webvtt、.ssa/.ass、图文电视、.smi 等)。
- go-astits- 在 GO 中原生解析和解复用 MPEG 传输流 (.ts)。
- go-mpd- MPEG-DASH 清单文件的解析器和生成器库。
- goav- FFmpeg 的综合 Go 绑定。
- gortsplib- 纯 Go RTSP 服务器和客户端库。
- hls-m3u8- HLS (M3U8) 播放列表的解析器和生成器;与规范保持同步更新。
- libvlc-go- libvlc 2.X/3.X/4.X 的 Go 绑定(VLC 媒体播放器使用)。
- mp4ff- 用于处理包含视频、音频、字幕或元数据的 MP4 文件的库和工具。
- v4l- 用 Go 编写的 Linux 视频捕获库。
Web框架
全栈 Web 框架。- Atreugo- 高性能、可扩展的微型 Web 框架,在热路径中实现零内存分配。
- Barf- 简而言之,这是一个用于构建基于 JSON 的 Web API 的卓越框架。它完全不干扰现有系统,并且没有重复造轮子。它的设计旨在让用户能够轻松快速地上手,同时又足够灵活,能够应对更复杂的用例。
- Beego- beego 是一个开源、高性能的 Go 编程语言 Web 框架。
- Confetti Framework- Confetti 是一个 Go Web 应用框架,拥有简洁优雅的语法。Confetti 融合了 Laravel 的优雅和 Go 的简洁。
- Don- 一个高性能且易于使用的 API 框架。
- Echo- 高性能、极简的 Go Web 框架。
- Fastschema- 一个灵活的 Go Web 框架和无头 CMS。
- Fiber- 一个基于 Fasthttp 构建的、受 Express.js 启发的 Web 框架。
- Flamingo- 一个用于可插拔 Web 项目的框架。它包含模块概念,并提供依赖注入、配置区域、国际化、模板引擎、GraphQL、可观测性、安全性、事件、路由和反向路由等功能。
- Flamingo Commerce- 提供使用 DDD 和端口与适配器等清晰架构的电子商务功能,您可以使用这些功能来构建灵活的电子商务应用程序。
- Fuego- 为忙碌的 Go 开发者打造的框架!Web 框架,可从源代码生成 OpenAPI 3 规范。
- Gin- Gin 是一个用 Go 语言编写的 Web 框架!它拥有类似 Martini 的 API,性能更佳,速度提升高达 40 倍。如果您需要高性能和高生产力,Gin 是您的理想之选。
- Ginrpc- Gin 参数自动绑定工具,gin rpc 工具。
- go-api-boot- 一个以 gRpc 为核心的微服务框架。其特性包括对 MongoDB 的 ODM 支持、云资源支持(AWS/Azure/Google)以及针对 gRpc 定制的流畅依赖注入。此外,它还直接支持 grpc-web,无需代理即可通过浏览器访问所有 gRpc API。
- Goa- Goa 为在 Go 中开发远程 API 和微服务提供了一种整体方法。
- GoFr- Gofr 是一个固执己见的微服务开发框架。
- GoFrame- GoFrame 是一个模块化、功能强大、高性能的企业级 Golang 应用程序开发框架。
- golamb- Golamb 使编写用于 AWS Lambda 和 API Gateway 的 API 端点变得更加容易。
- Gone- 一个受 Spring 启发的轻量级依赖注入和 Web 框架。
- goravel- 一个受 Laravel 启发的 Web 框架,具有 ORM、身份验证、队列、任务调度等内置功能。
- Goyave- 功能齐全的 REST API 框架,旨在实现简洁的代码和快速的开发,并具有强大的内置功能。
- Hertz- 一个高性能、高扩展性的 Go HTTP 框架,可帮助开发者构建微服务。
- hiboot- hiboot 是一个高性能的 Web 应用程序框架,支持自动配置和依赖注入。
- Huma- 一个用于构建现代 REST/GraphQL API 的框架,内置 OpenAPI 3、生成文档和 CLI。
- iWF- iWF 是一个用于开发长时间运行业务流程的一体化平台。它提供了一个便捷的抽象层,可用于使用数据库、ElasticSearch、消息队列、持久计时器等,并拥有简洁、易用且用户友好的界面。
- Lit- 高性能的 Golang 声明式 Web 框架,旨在实现简洁性和生活质量。
- Microservice- 用于创建微服务的框架,用 Golang 编写。
- patron- Patron 是一个遵循最佳云实践的微服务框架,专注于提高生产力。
- Pnutmux- Pnutmux 是一个功能强大的 Go Web 框架,它使用正则表达式来匹配和处理 HTTP 请求。它提供了诸如 CORS 处理、结构化日志记录、URL 参数提取、中间件和并发限制等功能。
- Revel- 用于 Go 语言的高效 Web 框架。
- rk-boot- 一个用于使用 Gin 和 gRPC 快速轻松地构建企业级 Go 微服务的引导程序库。
- Ronykit- 具有可插拔架构且性能非常高的 Web 框架。
- rux- 用于构建 golang HTTP 应用程序的简单快速的 Web 框架。
- templui- 用于 Go 和 Templ 的现代 UI 组件。
- uAdmin- 受 Django 启发的 Golang 功能齐全的 Web 框架。
- WebGo- 一个用于构建 Web 应用程序的微框架,支持处理程序链、中间件和上下文注入。它还包含符合标准库的 HTTP 处理程序(例如,http.HandlerFunc)。
- Xun- 一个基于 Go 内置 html/template 和 net/http 包路由的 Web 框架。它旨在轻量级、快速且易于使用,同时提供简洁直观的 API,用于构建具有中间件、路由和模板渲染等高级功能的 Web 应用程序。
- Yokai- 简单、模块化且可观察的 Go 后端应用程序框架。
中间件
实际中间件
- client-timing- 用于 Server-Timing 标头的 HTTP 客户端。
- CORS- 轻松地为您的 API 添加 CORS 功能。
- echo-middleware- 用于 Echo 框架的中间件,带有日志记录和指标功能。
- formjson- 透明地处理 JSON 输入,就像处理标准表单 POST 一样。
- go-fault- Go 的故障注入中间件。
- Limiter- 一个非常简单的 Go 速率限制中间件。
- ln-paywall- 使用闪电网络(比特币)按请求对 API 进行货币化的 Go 中间件。
- mid- 杂项 HTTP 中间件功能:处理程序的惯用错误返回;接收/响应 JSON 数据;请求跟踪;等等。
- rk-gin- Gin 框架的中间件,具有日志记录、指标、身份验证、跟踪等功能。
- rk-grpc- 用于 gRPC 的中间件,具有日志记录、指标、身份验证、跟踪等功能。
- Tollbooth- 速率限制 HTTP 请求处理程序。
- XFF- 处理 X-Forwarded-For 标头及其相关项。
- alice- 为 Go 提供轻松的中间件链。
- catena- http.Handler 包装器连接(与“chain”相同的 API)。
- chain- 带有作用域数据的处理程序包装器链(基于网络/上下文的“中间件”)。
- gores- 一个处理 HTML、JSON、XML 等响应的 Go 包。对 RESTful API 非常有用。
- interpose- 用于 golang 的极简 net/http 中间件。
- mediary- 向 http.Client 添加拦截器,以允许转储/整形/跟踪/... 请求/响应。
- muxchain- 用于 net/http 的轻量级中间件。
- negroni- Golang 的惯用 HTTP 中间件。
- render- 用于轻松渲染 JSON、XML 和 HTML 模板响应的 Go 包。
- renderer- 简单、轻量级且速度更快的 Go 响应(JSON、JSONP、XML、YAML、HTML、文件)渲染包。
- stats- Go 中间件,用于存储有关您的 Web 应用程序的各种信息。
路由器
- alien- 来自外太空的轻量级快速 http 路由器。
- bellt- 一个简单的 Go HTTP 路由器。
- Bone- 闪电般快速的 HTTP 多路复用器。
- Bxog- 一个简单快速的 Go 语言 HTTP 路由库。它支持各种复杂度、长度和嵌套的路由,并且能够根据接收到的参数生成 URL。
- chi- 基于 net/context 构建的小型、快速且富有表现力的 HTTP 路由器。
- fasthttprouter- 基于 httprouter 分支的高性能路由器。首个适配 fasthttp 的路由器。
- FastRouter- 一个用 Go 编写的快速、灵活的 HTTP 路由器。
- goblin- 一个基于 trie 树的 golang http 路由器。
- gocraft/web- Go 中的 Mux 和中间件包。
- Goji- Goji 是一个极简且灵活的 HTTP 请求复用器,支持 net/context。
- GoLobby/Router- GoLobby Router 是一个轻量级但功能强大的 Go 编程语言 HTTP 路由器。
- goroute- 简单而强大的 HTTP 请求多路复用器。
- GoRouter- GoRouter 是一个服务器/API 微框架、HTTP 请求路由器、多路复用器、mux,它提供了一个支持 net/context 的中间件的请求路由器。
- gowww/router- 速度极快的 HTTP 路由器,完全兼容 net/http.Handler 接口。
- httprouter- 高性能路由器。结合标准 HTTP 处理程序,可以构建一个高性能的 Web 框架。
- httptreemux- 一个高速、灵活的基于树的 Go HTTP 路由器。灵感来自 httprouter。
- lars- 是一个轻量级、快速且可扩展的零分配 HTTP 路由器,用于 Go 创建可定制的框架。
- mux- 功能强大的 golang URL 路由和分发器。
- nchi- 基于 httprouter 构建的类似 chi 的路由器,带有基于依赖注入的中间件包装器
- ngamux- 用于 Go 的简单 HTTP 路由器。
- ozzo-routing- 一个速度极快的 Go (golang) HTTP 路由器,支持正则表达式路由匹配。它完全支持构建 RESTful API。
- pure- 是一个轻量级的 HTTP 路由器,它遵循标准的“net/http”实现。
- Siesta- 用于编写中间件和处理程序的可组合框架。
- vestigo- 高性能、独立、符合 HTTP 标准的 Go Web 应用程序 URL 路由器。
- violetear- Go HTTP 路由器。
- xmux- 基于 httprouter 的高性能复用器,支持 net/context。
- xujiajun/gorouter- 一个简单快速的 Go HTTP 路由器。
WebAssembly
- dom- DOM 库。
- Extism Go SDK- 用于构建插件系统和多语言应用程序的通用、跨语言 WebAssembly 框架。
- go-canvas- 用于使用 HTML5 Canvas 的库,所有绘图都在 go 代码中完成。
- tinygo- 面向小型项目的 Go 编译器。支持微控制器、WebAssembly 和命令行工具。基于 LLVM。
- vert- Go 和 JS 值之间的互操作。
- wasmbrowsertest- 在浏览器中运行 Go WASM 测试。
- webapi- 由 WebIDL 生成的 DOM 和 HTML 的绑定。
Webhooks 服务器
- webhook- 允许用户创建 HTTP 端点(钩子)的工具,该端点可在服务器上执行命令。
- webhooked- 功能强大的 webhook 接收器:处理、保护、格式化和存储 Webhook 有效负载从未如此简单。
- WebhookX- 用于接收、处理和可靠传递消息的 webhook 网关。
Windows
- d3d9- Direct3D9 的 Go 绑定。
- go-ole- 用于 golang 的 Win32 OLE 实现。
- gosddl- 将 SDDL 字符串转换为用户友好的 JSON 的转换器。SDDL 由四部分组成:所有者、主组、DACL、SACL。
工作流框架
用于创建工作流的库。- Cadence-client- 一个用于创作在 Uber 开发的 Cadence 编排引擎之上运行的工作流和活动的框架。
- Dagu- 无代码工作流执行器。它执行以简单 YAML 格式定义的 DAG。
- go-dag- 一个用 Go 开发的框架,用于管理由有向无环图描述的工作流程的执行。
- go-taskflow- 一个类似 taskflow 的通用任务并行编程框架,集成了可视化工具和性能分析器。
- workflow- 一个与技术栈无关的事件驱动工作流框架。
XML
用于操作 XML 的库和工具。- XML-Comp- 简单的命令行 XML 比较器,可生成文件夹、文件和标签的差异。
- xml2map- 用 Golang 编写的 XML 到 MAP 转换器。
- xmlquery- xmlquery 是用于 XML 查询的 Golang XPath 包。
- xmlwriter- 基于 libxml2 的 xmlwriter 模块的过程式 XML 生成 API。
- xpath- Go 的 XPath 包。
- zek- 从 XML 生成 Go 结构体。
零信任
用于实现零信任架构的库和工具。- Cosign- 在 OCI 注册表中对容器进行签名、验证和存储。
- in-toto- in-toto(提供保护软件供应链完整性的框架)Python 参考实现的 Go 实现。
- OpenZiti- 一个完整的开源零信任覆盖网络。它包含众多支持多种语言(例如 golang)的 SDK,使您能够将零信任原则直接嵌入到您的应用程序中。OpenZiti 测试厨房 提供了大量示例供您参考,其中包括一个 零信任 SSH 客户端 - zssh。
- Spiffe-Vault- 使用 Spiffe JWT 身份验证和 Hashicorp Vault 进行无密钥身份验证。
- Spire- SPIRE(SPIFFE 运行时环境)是一个 API 工具链,用于在各种托管平台上建立软件系统之间的信任。
代码分析
源代码分析工具,也称为静态应用程序安全测试 (SAST) 工具。- apicompat- 检查 Go 项目最近的更改是否存在向后不兼容的更改。
- asty- 将 golang AST 转换为 JSON,以及将 JSON 转换为 AST。
- blanket- Blanket 是一个工具,可以帮助您捕获 Go 包中没有直接单元测试的函数。
- ChainJacking- 查找您的 Go 语言直接 GitHub 依赖项中哪些容易受到 ChainJacking 攻击。
- Chronos- 静态检测竞态条件
- dupl- 代码克隆检测工具。
- errcheck- Errcheck 是一个用于检查 Go 程序中未检查错误的程序。
- fatcontext- Fatcontext 检测循环或函数字面量中的嵌套上下文。
- go-checkstyle- checkstyle 是一款类似 Java checkstyle 的代码风格检查工具。该工具的灵感来源于 Java checkstyle 和 golint。其风格参考了 Go 代码审查注释中的一些要点。
- go-cleanarch- go-cleanarch 的创建是为了验证 Clean Architecture 规则,例如依赖关系规则以及 Go 项目中包之间的交互。
- go-critic- 源代码 linter,提供其他 linter 目前尚未实现的检查。
- go-mod-outdated- 查找 Go 项目中过时依赖项的简单方法。
- goast-viewer- 基于 Web 的 Golang AST 可视化工具。
- goimports- 用于自动修复(添加、删除)Go 导入的工具。
- golang-ifood-sdk- iFood API SDK。
- golangci-lint– 一个快速的 Go 代码检查器运行器。它并行运行代码检查器,使用缓存,支持 yaml 配置,与所有主流 IDE 集成,并包含数十种代码检查器。
- golines- 一个自动缩短 Go 代码中过长行的格式化程序。
- GoPlantUML- 生成包含结构和接口信息以及它们之间关系的文本植物类图的库和 CLI。
- goreturns- 添加零值返回语句以匹配函数返回类型。
- gostatus- 命令行工具,显示包含 Go 包的存储库的状态。
- lint- 在 go test 中运行 lints。
- php-parser- 一个用 Go 编写的 PHP 解析器。
- revive– 速度快约 6 倍,更严格,可配置,可扩展,并且是 golint 的美观替代品。
- staticcheck- staticcheck 是功能更强大的 go vet,它应用了大量你可能在 ReSharper 等 C# 工具中习惯使用的静态分析检查。
- testifylint– 一个检查 github.com/stretchr/testify 使用情况的代码检查工具。
- tickgit- 用于显示代码注释 TODO(任何语言)并应用 git blame 来识别作者的 CLI 和 go 包。
- todocheck- 静态代码分析器,可将代码中的 TODO 注释与问题跟踪器中的问题关联起来。
- unconvert- 从 Go 源代码中移除不必要的类型转换。
- usestdlibvars- 一个代码检查工具,用于检测是否可以使用 Go 标准库中的变量/常量。
- vacuum- 一个超快、轻量级的 OpenAPI 代码检查和质量检查工具。
- validate- 自动验证带有标签的结构体字段。
- wrapcheck- 一个用于检查外部包中的错误是否被包装的 linter。
编辑器插件
适用于文本编辑器和集成开发环境的插件。- coc-go 语言服务器扩展,适用于 Vim/Neovim- 此插件为 Vim/Neovim 添加了 gopls 功能。
- Go Doc- 一个 Visual Studio Code 扩展,用于在输出中显示定义并生成 Go 文档。
- JetBrains IDE 的 Go 插件- JetBrains IDE 的 Go 插件。
- go-mode- GNU/Emacs 的 Go 模式。
- gocode- Go 编程语言的自动补全守护进程。
- goimports-reviser- 导入格式化工具。
- goprofiling- 此扩展程序为 VS Code 添加了 Go 语言的基准测试分析支持。
- GoSublime- 适用于文本编辑器 SublimeText 3 的 Golang 插件集合,提供代码补全和其他类似 IDE 的功能。
- gounit-vim- Vim 插件,用于根据函数或方法的签名生成 Go 测试。
- vim-compiler-go- Vim 插件,用于在保存时突出显示语法错误。
- vim-go- Vim 的 Go 开发插件。
- vscode-go- Visual Studio Code (VS Code) 的扩展,提供对 Go 语言的支持。
- Watch- 在文件更改时运行 acme win 命令。
生成工具
- envdoc- 从 Go 源文件生成环境变量文档。
- generic- Go 的灵活数据类型。
- gocontracts- 通过将代码与文档同步,为 Go 引入了契约式设计。
- godal- 通过指定 sql ddl 文件生成与 golang 对应的 orm 模型,可供 gorm 使用。
- gonerics- Go 中的惯用泛型。
- gotests- 从源代码生成 Go 测试。
- gounit- 使用您自己的模板生成 Go 测试。
- hasgo- 为您的切片生成 Haskell 风格的函数。
- options-gen- Dave Cheney 的文章“友好 API 的函数式选项”中描述的函数式选项。
- re2dfa- 将正则表达式转换为有限状态机并输出 Go 源代码。
- sqlgen- 从 SQL 文件或 DSN 生成 gorm、xorm、sqlx、bun、sql 代码。
- TOML-to-Go- 在浏览器中立即将 TOML 转换为 Go 类型。
- xgen- XSD(XML Schema Definition)解析器和 Go/C/Java/Rust/TypeScript 代码生成器。
Go 工具
- decouple- 查找“过度指定”的函数参数,这些参数可以通过接口类型进行泛化。
- docs- 自动为 GO 项目生成 RESTful API 文档 - 符合 Open API 规范标准。
- go-callvis- 使用点格式可视化 Go 程序的调用图。
- go-size-analyzer- 分析和可视化已编译的 Golang 二进制文件中依赖项的大小,从而深入了解它们对最终构建的影响。
- go-swagger- Go 语言的 Swagger 2.0 实现。Swagger 是一种简单而强大的 RESTful API 表示方法。
- go-template-playground- 一个用于创建和测试 Go 模板的交互式环境。
- godbg- Rust 的 dbg! 宏的实现,用于在开发过程中快速轻松地进行调试。
- gomodrun- Go 工具,用于执行和缓存 go.mod 文件中包含的二进制文件。
- gotemplate.io- 在线工具,用于实时预览 text/template 模板。
- gotestdox- 将 Go 测试结果显示为可读的句子。
- gothanks- GoThanks 会自动为你的 go.mod GitHub 依赖项加星标,以此方式向其维护者表达一些喜爱之情。
- gotutor- 在线 Go 调试器和可视化工具。
- igo- 一个 igo 到 go 的转译器(支持 Go 语言的新语言特性!)
- modver- 根据 semver 规则,比较 Go 模块的两个版本,以检查所需的版本号更改(主版本号、次版本号或补丁版本号)。
- MoniGO- 一个用于 Go 应用程序的性能监控库。它提供应用程序性能的实时洞察!🚀
- OctoLinker- 使用 OctoLinker GitHub 浏览器扩展程序高效地浏览 go 文件。
- richgo- 使用文本装饰丰富 go test 的输出。
- roumon- 通过命令行界面监控所有活动 goroutine 的当前状态。
- rts- RTS:响应结构体。根据服务器响应生成 Go 结构体。
- textra- 提取 Go 结构体字段名称、类型和标签,用于过滤和导出。
- typex- 检查 Go 类型及其传递依赖项,或者将结果导出为 TypeScript 值对象(或类型)声明。
软件包
用 Go 语言编写的软件。DevOps 工具
- abbreviate- abbreviate 是一个工具,可以将长字符串转换为带有可配置分隔符的较短字符串,例如将分支名称嵌入到部署堆栈 ID 中。
- alaz- 轻松、低开销、基于 eBPF 的 Kubernetes 监控。
- aptly- aptly 是一个 Debian 软件仓库管理工具。
- aurora- 跨平台的基于 Web 的 Beanstalkd 队列服务器控制台。
- awsenv- 一个小型二进制文件,用于加载配置文件的 Amazon (AWS) 环境变量。
- Balerter- 一个自托管的基于脚本的警报管理器。
- Blast- 一个简单的 API 负载测试和批量作业工具。
- bombardier- 快速跨平台 HTTP 基准测试工具。
- cassowary- 用 Go 编写的现代跨平台 HTTP 负载测试工具。
- chaosmonkey- 一款弹性工具,可帮助应用程序容忍随机实例故障。
- Ddosify- 高性能负载测试工具,用 Golang 编写。
- decompose- 用于生成和处理 Docker 容器连接图的工具。
- DepCharge- 帮助协调大型项目中众多依赖项的命令执行。
- dish- 一个轻量级的、可远程配置的监控服务。
- Docker- 面向开发人员和系统管理员的分布式应用程序开放平台。
- docker-go-mingw- 用于使用 MinGW 工具链为 Windows 构建 Go 二进制文件的 Docker 镜像。
- docker-volume-backup- 将 Docker 卷备份到本地或任何 S3、WebDAV、Azure Blob Storage、Dropbox 或 SSH 兼容的存储。
- Dockerfile-Generator- 一个 Go 库和一个可执行文件,它使用各种输入通道生成有效的 Dockerfile。
- dogo- 监控源文件中的更改并自动编译和运行(重启)。
- drone-jenkins- 使用二进制文件、docker 或 Drone CI 触发下游 Jenkins 作业。
- drone-scp- 使用二进制文件、docker 或 Drone CI 通过 SSH 复制文件和工件。
- Dropship- 通过 CDN 部署代码的工具。
- easyssh-proxy- Golang 包,可通过 SSH 和 SCP 通过 ProxyCommand 轻松进行远程执行和下载。
- fac- 用于修复 git 合并冲突的命令行用户界面。
- Flannel- Flannel 是一个面向容器的网络架构,专为 Kubernetes 设计。
- Fleet 设备管理- 适用于服务器和工作站的轻量级、可编程遥测。
- gaia- 使用任何编程语言构建强大的管道。
- ghorg- 快速将整个 org/users 存储库克隆到一个目录中 - 支持 GitHub、GitLab、Gitea 和 Bitbucket。
- Gitea- Gogs 的一个分支,完全由社区驱动。
- gitea-github-migrator- 将您的所有 GitHub 存储库、问题、里程碑和标签迁移到您的 Gitea 实例。
- go-furnace- 用 Go 语言编写的托管解决方案。轻松将您的应用程序部署到 AWS、GCP 或 DigitalOcean。
- go-rocket-update- 一种使 Go 应用程序自动更新的简单方法 - 支持 Github 和 Gitlab。
- go-selfupdate- 启用 Go 应用程序的自我更新。
- gobrew- gobrew 让您可以轻松地在多个 go 版本之间切换。
- gobrew- Go 版本管理器。一个极其简单的工具,用于安装和管理 Go 版本。无需 root 权限即可安装 Go。Gobrew 不需要 shell 重哈希。
- godbg- 基于 Web 的 gdb 前端应用程序。
- Gogs- 一个用 Go 编程语言编写的自托管 Git 服务。
- goma-gateway- 一个轻量级 API 网关和反向代理,具有声明式配置、强大的中间件,并支持 REST、GraphQL、TCP、UDP 和 gRPC。
- gonative- 该工具创建了一个 Go 构建版本,该版本可以交叉编译到所有平台,同时仍然使用启用 Cgo 的 stdlib 包版本。
- govvv- “go build” 包装器,可轻松将版本信息添加到 Go 二进制文件中。
- grapes- 一款轻量级工具,旨在轻松地通过 ssh 分发命令。
- GVM- GVM 提供了一个管理 Go 版本的接口。
- Hey- Hey 是一个小型程序,它向 Web 应用程序发送一些负载。
- httpref- httpref 是一个方便的 CLI 参考工具,用于查找 HTTP 方法、状态代码、标头以及 TCP 和 UDP 端口。
- jcli- Jenkins CLI 使您能够以简单的方式管理 Jenkins。
- k0s- 零摩擦 Kubernetes 发行版。
- k3d- 用于在 Docker 中运行 CNCF 的 k3s 的小助手。
- k3s- 轻量级 Kubernetes。
- k6- 一款使用 Go 和 JavaScript 的现代负载测试工具。
- k9s- Kubernetes CLI,让您以时尚的方式管理集群。
- kala- 简洁、现代、高性能的作业调度器。
- kcli- 用于检查 kafka 主题/分区/消息的命令行工具。
- kind- Kubernetes IN Docker - 用于测试 Kubernetes 的本地集群。
- ko- 用于在 Kubernetes 上构建和部署 Go 应用程序的命令行工具
- kool- 用于轻松管理 Docker 环境的命令行工具。
- kubeblocks- KubeBlocks 是一个开源控制平面,用于在 K8s 上运行和管理数据库、消息队列和其他数据基础设施。
- kubernetes- 来自 Google 的容器集群管理器。
- kubeshark- 受 Wireshark 启发,专为 Kubernetes 构建的 API 流量分析器。
- KubeVela- 云原生应用程序交付。
- KubeVPN- KubeVPN 提供云原生开发环境,可无缝连接到您的 Kubernetes 集群网络。
- KusionStack- 一个统一的可编程配置技术栈,以“平台即代码”和“基础设施即代码”的方式交付现代应用程序。
- kwatch- 立即监控和检测 Kubernetes (K8s) 集群中的崩溃。
- lstags- 用于在不同注册表之间同步 Docker 镜像的工具和 API。
- lwc- UNIX wc 命令的实时更新版本。
- manssh- manssh 是一个命令行工具,可以轻松管理您的 ssh 别名配置。
- Mantil- 一个专门用于在 AWS 上构建无服务器应用程序的 Go 框架,它使您能够专注于纯 Go 代码,而 Mantil 则负责处理基础设施。
- minikube- 在本地运行 Kubernetes。
- Moby- 用于构建容器生态系统的协作项目,用于组装基于容器的系统。
- Mora- 用于访问 MongoDB 文档和元数据的 REST 服务器。
- ostent- 收集并显示系统指标,并可选择将其转发到 Graphite 和/或 InfluxDB。
- Packer- Packer 是一个用于从单个源配置为多个平台创建相同机器映像的工具。
- Pewpew- 灵活的 HTTP 命令行压力测试器。
- PipeCD- 一个 GitOps 风格的持续交付平台,为任何应用程序提供一致的部署和运维体验。
- podinfo- Podinfo 是一个用 Go 语言编写的小型 Web 应用程序,展示了在 Kubernetes 中运行微服务的最佳实践。Podinfo 被 CNCF 的 Flux 和 Flagger 等项目用于端到端测试和研讨会。
- podman-tui- Podman 管理的终端 UI。
- Pomerium- Pomerium 是一个身份感知访问代理。
- Rodent- Rodent 帮助您管理 Go 版本、项目和跟踪依赖项。
- s3-proxy- 具有 GET、PUT 和 DELETE 方法以及身份验证(OpenID Connect 和基本身份验证)的 S3 代理。
- s3gof3r- 一个小型实用程序/库,针对高速将大型对象传输到 Amazon S3 和从 Amazon S3 传输大型对象进行了优化。
- s5cmd- 速度极快的 S3 和本地文件系统执行工具。
- Scaleway-cli- 通过命令行管理裸机服务器(就像使用 Docker 一样简单)。
- script- 使在 Go 中编写类似 shell 的脚本变得容易,用于 DevOps 和系统管理任务。
- sg- 对一组 HTTP 端点(如 ab)进行基准测试,可以根据服务器之前的响应,使用每次调用之间的响应代码和数据来对服务器施加特定的压力。
- sigma- OCI 原生容器镜像仓库,支持 OCI 原生制品、扫描制品、镜像构建等。
- skm- SKM 是一个简单而强大的 SSH 密钥管理器,它可以帮助您轻松管理多个 SSH 密钥!
- StatusOK- 监控您的网站和 REST API。当您的服务器宕机或响应时间超出预期时,通过 Slack 和电子邮件获取通知。
- tau- 轻松构建云计算平台,其功能包括无服务器 WebAssembly 函数、前端托管、CI/CD、对象存储、K/V 数据库和发布/订阅消息传递。
- terraform-provider-openapi- Terraform 提供程序插件,它根据包含公开 API 定义的 OpenAPI 文档(以前称为 swagger 文件)在运行时动态配置自身。
- tf-profile- Terraform 运行的性能分析器。生成全局统计信息、资源级统计信息或可视化图表。
- tlm- 本地命令行助手,由 CodeLLaMa 提供支持
- traefik- 支持多个后端的反向代理和负载均衡器。
- trubka- 一个 CLI 工具,用于管理和排查 Apache Kafka 集群故障,能够以通用方式向 Kafka 发布/消费协议缓冲区和纯文本事件。
- uTask- 自动化引擎,用于建模和执行在 yaml 中声明的业务流程。
- Vegeta- HTTP 负载测试工具和库。它超过 9000 个参数!
- wait-for- 在继续执行之前,等待某个事件(通过命令行)发生。轻松编排 Docker 服务和其他任务。
- Wide- 使用 Golang 的基于 Web 的团队 IDE。
- winrm-cli- 用于在 Windows 机器上远程执行命令的 CLI 工具。
其他软件
- Better Go Playground- 具有语法高亮、代码补全和其他功能的 Go 游戏平台。
- blocky- 一款快速轻量级的 DNS 代理,可作为本地网络广告拦截器,具有许多功能。
- bluetuith- Linux 的 TUI 蓝牙管理器。
- borg- 基于终端的 bash 代码片段搜索引擎。
- boxed- 基于 Dropbox 的博客引擎。
- Chapar- Chapar 是一个用 Go 语言构建的跨平台 Postman 替代方案,旨在帮助开发者测试其 API 端点。它支持 http 和 grpc 协议。
- Cherry- 用 Go 编写的小型网络聊天服务器。
- Circuit- Circuit 是一个可编程的平台即服务 (PaaS) 和/或基础设施即服务 (IaaS),用于管理、发现、同步和编排构成云应用程序的服务和主机。
- Comcast- 模拟不良的网络连接。
- confd- 使用 etcd 或 consul 中的模板和数据管理本地应用程序配置文件。
- crawley- 用于命令行界面的 Web 爬虫/抓取工具。
- croc- 轻松安全地将文件或文件夹从一台计算机发送到另一台计算机。
- Documize- 集成了来自 SaaS 工具的数据的现代 wiki 软件。
- dp- 通过与区块链进行数据交换的 SDK,开发者可以轻松访问 DAPP 开发。
- drive- 命令行 Google Drive 客户端。
- Duplicacy- 一款基于无锁去重理念的跨平台网络和云备份工具。
- fjira- 一个基于模糊搜索的Atlasian Jira终端用户界面应用程序
- Gebug- 一款通过无缝启用调试器和热重载功能,使 Dockerized Go 应用程序的调试变得超级简单的工具。
- gfile- 通过 WebRTC 在两台计算机之间安全地传输文件,无需任何第三方。
- Go Package Store- 显示 GOPATH 中 Go 包更新的应用程序。
- go-peerflix- 视频流媒体 torrent 客户端。
- goblin- 用 Go 语言编写的用于 CLI 的云构建器
- GoBoy- 用 Go 语言编写的任天堂 Game Boy Color 模拟器。
- gocc- Gocc 是一个用 Go 编写的 Go 编译器套件。
- GoDocTooltip- 用于 Go Doc 网站的 Chrome 扩展程序,可在函数列表中以工具提示的形式显示函数描述。
- Gokapi- 轻量级文件共享服务器,文件会在达到一定下载次数或天数后过期。类似于 Firefox Send,但不提供公开上传功能。
- GoLand- 功能齐全的跨平台 Go IDE。
- GoNB- 使用 Jupyter Notebook 进行交互式 Go 编程(也适用于 VSCode、Binder 和 Google 的 Colab)。
- Gor- Http 流量复制工具,用于将生产环境中的流量实时重放到测试/开发环境中。
- Guora- 一个用 Go 编写的类似 Quora 的自托管 Web 应用程序。
- hoofli- 从 Chrome 或 Firefox 网络检查生成 PlantUML 图。
- hotswap- 一个完整的解决方案,无需重启服务器、中断或阻塞任何正在进行的进程即可重新加载您的 Go 代码。
- hugo- 快速现代的静态网站引擎。
- ide- 可在浏览器中访问的 IDE。专为 Go 语言设计。
- joincap- 用于合并多个 pcap 文件的命令行实用程序。
- JuiceFS- 基于 Redis 和 AWS S3 构建的分布式 POSIX 文件系统。
- Juju- 与云无关的服务部署和编排 - 支持 EC2、Azure、Openstack、MAAS 等。
- Layli- 用代码绘制漂亮的布局图。
- Leaps- 使用操作转换的结对编程服务。
- lgo- 使用 Jupyter 进行交互式 Go 编程的工具。它支持代码补全、代码检查,并且 100% 兼容 Go 语言。
- limetext- Lime Text 是一款功能强大且优雅的文本编辑器,主要使用 Go 语言开发,旨在成为 Sublime Text 的免费开源软件继任者。
- LiteIDE- LiteIDE 是一个简单、开源、跨平台的 Go IDE。
- mockingjay- 仅需一个配置文件即可创建模拟 HTTP 服务器和消费者驱动的合约。您还可以让服务器随机出现异常行为,以便进行更贴近实际的性能测试。
- myLG- 用 Go 编写的命令行网络诊断工具。
- naclpipe- 用 Go 编写的基于 NaCL EC25519 的简单加密管道工具。
- Neo-cowsay- 🐮 cowsay 重生了,迎接新时代。
- nes- 用 Go 编写的任天堂娱乐系统 (NES) 模拟器。
- Orbit- 一个简单的工具,用于运行命令和从模板生成文件。
- peg- Peg,解析表达式语法,是 Packrat 解析器生成器的一个实现。
- Plik- Plik 是一个用 Go 编写的临时文件上传系统(类似 Wetransfer)。
- portal- Portal 是一个快速简便的命令行文件传输实用程序,可将文件从任何计算机传输到另一台计算机。
- restic- 去重备份程序。
- sake- sake 是一个用于本地和远程主机的命令运行器。
- scc- Sloc Cloc and Code,一个非常快速准确的代码计数器,具有复杂度计算和 COCOMO 估计。
- Seaweed 文件系统- 快速、简单且可扩展的分布式文件系统,磁盘寻道时间为 O(1)。
- shell2http- 通过 http 服务器执行 shell 命令(用于原型设计或远程控制)。
- Snitch- 当有人通过 Tsuru 部署任何应用程序时,通知您的团队和许多工具的简单方法。
- sonic- Sonic 是一个 Go 博客平台。简单而强大。
- Stack Up- Stack Up,一个超级简单的部署工具 - 就像 Unix 一样 - 可以把它想象成服务器网络的“make”。
- stew- 一个独立的编译二进制文件包管理器。
- syncthing- 开放的、去中心化的文件同步工具和协议。
- tcpdog- 基于 eBPF 的 TCP 可观测性。
- tinycare-tui- 一个小型终端应用程序,显示过去 24 小时和一周的 git 提交、当前天气、一些自我护理建议、一个笑话以及您当前的待办事项列表任务。
- toxiproxy- 用于模拟自动化测试的网络和系统条件的代理。
- tsuru- 可扩展的开源平台即服务软件。
- vaku- Vault 中基于文件夹的功能的 CLI 和 API,例如复制、移动和搜索。
- vFlow- 高性能、可扩展且可靠的 IPFIX、sFlow 和 Netflow 收集器。
- Wave Terminal- Wave 是一个开源的、原生 AI 终端,专为实现无缝的开发者工作流程而构建,具有内联渲染、现代用户界面和持久会话功能。
- wellington- Sass 项目管理工具,使用 sprite 函数(如 Compass)扩展了该语言。
- woke- 检测源代码中的非包容性语言。
- yai- AI 驱动的终端助手。
- zs- 一个极其简单的静态网站生成器。
资源
哪里可以发现新的 Go 语言库?基准测试
- autobench- 用于比较不同 Go 版本之间性能的框架。
- go-benchmark-app- 功能强大的 HTTP 基准测试工具,集成了 Ab、Wrk 和 Siege 工具。收集统计数据和各种参数,用于基准测试和比较结果。
- go-benchmarks- 一些零散的 Go 语言微基准测试。将一些语言特性与替代方法进行比较。
- go-http-routing-benchmark- Go HTTP 请求路由基准测试和比较。
- go-json-benchmark- Go JSON 基准测试。
- go-ml-benchmarks- Go 中机器学习推理的基准测试。
- go-web-framework-benchmark- Go web 框架基准测试。
- go_serialization_benchmarks- Go 序列化方法的基准测试。
- gocostmodel- Go 语言常见基本操作的基准测试。
- golang-benchmarks- golang 基准测试集合。
- golang-sql-benchmark- 流行的 Go 数据库/SQL 实用程序的基准测试集合。
- gospeed- 用于计算语言结构速度的 Go 微基准测试。
- kvbench- 键/值数据库基准测试。
- skynet- Skynet 1M 线程微基准测试。
- speedtest-resize- 比较 Go 语言中各种图像缩放算法。
会议
- GoCon- 日本东京。
- GoDays- 德国柏林。
- GoLab- 意大利佛罗伦萨。
- GopherCon- 每年在美国各地举办。
- GopherCon Australia- 澳大利亚悉尼。
- GopherCon Brazil- 巴西弗洛里亚诺波利斯。
- GopherCon Europe- 德国柏林。
- GopherCon India- 印度浦那。
- GopherCon Israel- 以色列特拉维夫。
- GopherCon Russia- 俄罗斯莫斯科。
- GopherCon Singapore- 新加坡丰树商业城。
- GopherCon UK- 英国伦敦。
- GopherCon 越南- 越南胡志明市。
- GoWest 会议- 美国莱希。
电子书购买
- 围棋中的100个错误:如何避免它们
- Black Hat Go- 面向黑客和渗透测试人员的 Go 编程。
- 用 Go 语言构建 Orchestrator
- Go 中的持续交付- 这本实用的持续交付指南将向您展示如何快速建立一个自动化管道,从而改进您的测试、代码质量和最终产品。
- 使用 TinyGo 和 WebAssembly 的创意 DIY 微控制器项目- TinyGo 编译器入门,包含涉及 Arduino 和 WebAssembly 的项目。
- Effective Go: Elegant, efficient, and testable code- 解锁 Go 语言独特的程序设计视角,开始编写简单、可维护、可测试的 Go 代码。
- For the Love of Go- 一本面向 Go 初学者的入门书籍。
- Go in Practice, Second Edition- 这是一本实用的 Go 开发指南,涵盖了标准库和 Go 强大生态系统中最重要的工具。
- 了解 Go:泛型- 理解和使用 Go 中的泛型的指南。
- Lets-Go- 使用 Go 创建快速、安全且易于维护的 Web 应用程序的分步指南。
- Lets-Go-Further- 使用 Go 构建 API 和 Web 应用程序的高级模式。
- Go 语言的强大功能:测试- Go 语言测试指南。
- Go 语言的力量:工具- 用 Go 语言编写命令行工具的指南。
- 用 Go 编写编译器
- 用 Go 编写解释器- 本书介绍了数十种编写地道、富有表现力且高效的 Go 代码的技巧,避免了常见的陷阱。
免费电子书
- Go 开发者笔记
- Go 语言编程入门
- 使用 Go 和 gRPC 从零开始构建区块链- 这是一本基础且实用的指南,可帮助您有效地学习和逐步地使用 Go 和 gRPC 从零开始构建区块链。
- 使用 Golang 构建 Web 应用程序
- 使用 Go 构建 Web 应用
- Go 101- 一本专注于 Go 语法/语义和各种细节的书籍。
- Go AST Book (中文)- 一本专注于 Go go/* 包的书籍。
- Go Faster- 本书旨在缩短您的学习曲线,帮助您更快地成为一名熟练的 Go 程序员。
- Go Succinctly- 波斯语。
- 顺应领域- 一本通过实际重构展示如何应用 DDD、Clean Architecture 和 CQRS 的书。
- GoBooks- 精选的 Go 书籍列表。
- 如何使用 Go 编程电子书- 这是一本 600 页的 Go 语言入门书籍,面向初学者开发者。
- 学习 Go 语言
- 使用 Go 进行网络编程
- 实用围棋课程
- Spaceship Go:通往标准库的旅程
- Go编程语言
- Golang 标准库示例(中文)
- 小围棋书
- 使用 Go 语言开发的 Web 应用程序:反教科书
- 免费地鼠包- Maria Letta 制作的地鼠图形包,包含矢量和栅格插图及情感角色。
- Go-gopher-Vector- Go gopher 矢量数据 [.ai, .svg]。
- gopher-logos- 可爱的地鼠标志。
- gopher-stickers
- gophericons
- gopherize.me- 让自己变得像 Gopherize 一样。
- gophers- Ashley McNamara 的 Gopher 艺术作品。
- gophers- 免费 gophers。
- gophers- 随机的地鼠图形。
- gophers- 地鼠玩偶图案。
- gophers- Aurélie Vache 的 Gophers。
聚会
- 巴塞尔 Go Meetup
- 贝尔法斯特地鼠队
- 贝尔格莱德 Golang Meetup
- 柏林 Golang
- 布里斯班 Golang 爱好者
- Bärner Go Meetup - 瑞士伯尔尼
- Go Ireland - Dublin
- Go Language NYC
- Go London 用户组
- Go Remote Meetup
- Go Toronto
- Go 用户组亚特兰大分会
- GoBandung
- GoBridge,加利福尼亚州旧金山
- GoCracow - 波兰克拉科夫
- GoJakarta
- Golang 阿姆斯特丹
- Golang 阿根廷
- Golang Athens
- Golang 巴尔的摩,马里兰州
- Golang Bangalore
- Golang 贝洛奥里藏特 - 巴西
- Golang Boston
- Golang 保加利亚
- 英国卡迪夫 Golang 聚会
- Golang Copenhagen
- Golang Curitiba - 巴西
- Golang DC,弗吉尼亚州阿灵顿
- 英国多塞特郡 Golang 聚会
- Golang Estonia
- Golang 古尔冈,印度
- Golang Hamburg - Germany
- Golang Israel
- Golang 加德满都
- Golang 利马 - 秘鲁
- Golang Lyon
- Golang Marseille
- Golang Melbourne
- Golang Milano
- Golang North East
- Golang Paris
- Golang Poland
- Golang Pune
- Golang Roma
- Golang 鹿特丹
- Golang Singapore
- Golang Stockholm
- Golang Sydney, AU
- Golang 圣保罗 - 巴西
- Golang Taipei
- Golang Thessaloniki
- Golang 都灵
- Golang Turkey
- 温哥华 Golang 社区
- 奥地利维也纳 Golang 聚会
- Golang Москва
- GoSF - 加利福尼亚州旧金山
- Istanbul Golang
- 拉各斯地鼠队
- 内罗毕地鼠队
- 西雅图 Go 程序员
- 乌克兰 Golang 用户组
- 犹他州 Go 用户组
- Women Who Go - 旧金山,加州
- 苏黎世地鼠俱乐部 - 瑞士苏黎世
风格指南
社交媒体
推特
网站
- Awesome Go @LibHunt- 您的 Go 工具箱。
- Awesome Golang Workshops- 精选的 Golang 工作坊列表。
- 超棒的远程工作- 精选的超棒远程工作列表。其中很多工作都在招聘 Go 语言程序员。
- awesome-awesomeness- 其他令人惊叹的列表列表。
- awesome-go-extra- 解析 awesome-go README 文件并生成包含仓库信息的新 README 文件。
- Code with Mukesh- 软件工程师和博客 @ codewithmukesh.com。
- Coding Mystery- 使用 Go 解决激动人心的密室逃脱式编程挑战。
- CodinGame- 通过解决以小游戏为实例的交互式任务来学习围棋。
- Go Blog- Go 官方博客。
- Go Code Club- 一群 Gophers 每周阅读和讨论一个不同的 Go 项目。
- Hashnode 上的 Go 社区- Hashnode 上的 Gophers 社区。
- Go Forum- 用于讨论 Go 的论坛。
- Go 项目- Go 社区 wiki 上的项目列表。
- Go Proverbs- Rob Pike 编写的 Go Proverbs。
- Go 成绩单- 您的 Go 套餐的成绩单。
- go.dev- Go 开发者中心。
- gocryforhelp- 需要帮助的 Go 项目集合。是开启 Go 开源之旅的好去处。
- Golang 开发人员职位- 专门面向 Golang 相关角色的开发人员职位。
- Golang 新闻- 关于 Go 编程的链接和新闻。
- Golang Nugget- 每周一将精选的最佳 Go 内容汇总发送到您的收件箱。
- Golang Weekly- 每周一发布有关 Go 的项目、教程和文章。
- golang-nuts- Go 邮件列表。
- Google Plus 社群- 面向 #golang 爱好者的 Google+ 社群。
- Gopher 社区聊天- 加入我们为 Gopher 建立的全新 Slack 社区(了解它的由来)。
- Gophercises- 为有志成为程序员的人们提供的免费编程练习。
- json2go- 高级 JSON 到 Go 结构转换 - 在线工具。
- justforfunc- 由 Francesc Campoy @francesc 主持的 YouTube 频道,致力于 Go 编程语言的技巧和窍门。
- 学习 Go 编程- 通过插图学习 Go 概念。
- Libs.tech– 超棒的 Go 语言库和隐藏的瑰宝
- 使用 Golang 制作
- pkg.go.dev- 开源 Go 软件包的文档。
- studygolang- 中国 studygolang 社区。
- GitHub 上今日热门 Go 代码库- 寻找新的 Go 库的好地方。
- TutorialEdge - Golang
教程
- Go 语言的 50 种不同之处- 新手 Golang 开发人员的陷阱、陷阱和常见错误。
- Go 结构化日志记录综合指南- 深入探索 Go 中的结构化日志记录世界,重点关注最近被接受的 slog 提案,该提案旨在将具有级别的高性能结构化日志记录引入标准库。
- Golang 电子商务指南- 构建一个用于电子商务的 Golang 网站(包含演示)。
- Go 语言导览- Go 语言交互式导览。
- 用 1000 行代码构建数据库- 用 1000 行代码从零开始构建 NoSQL 数据库。
- 使用 Golang 构建 Web 应用程序- Golang 电子书介绍如何使用 Golang 构建 Web 应用程序。
- 使用 Gorilla Mux 和 PostgreSQL 在 Go 中构建和测试 REST API- 我们将借助强大的 Gorilla Mux 编写 API。
- 使用 Gin 构建 Go Web 应用程序和微服务- 熟悉 Gin,了解它如何帮助您减少样板代码并构建请求处理管道。
- 缓存慢数据库查询- 如何缓存慢数据库查询。
- 取消 MySQL- 如何取消 MySQL 查询。
- CodeCrafters Golang Track- 通过构建自己的 Redis、Docker、Git 和 SQLite,掌握高级 Go 语言。课程内容涵盖 goroutine、系统编程、文件 I/O 等。
- Go 中的设计模式- 用 Go 实现的编程设计模式集合。
- 围棋游戏- 一个教授编程和游戏开发的视频系列。
- Go By Example- 通过带注释的示例程序进行 Go 语言的实践入门。
- Go 速查表- Go 的参考卡。
- Go database/sql 教程- database/sql 简介。
- 7 天学会 Go- 7 天内学会 Go 的所有知识(来自 Nodejs 开发人员)。
- Go 语言教程- 学习 Go 语言教程。
- Go 教程- 学习 Go 编程。
- Go WebAssembly 教程 - 构建一个简单的计算器
- go-clean-template- 用于 Golang 服务的 Clean Architecture 模板。
- go-patterns- 精选的 Go 设计模式、配方和惯用法列表。
- 面向 Node.js 开发人员的 Golang- Golang 与 Node.js 的比较示例,用于学习。
- Golang 教程指南- 学习 Go 编程语言的免费课程列表。
- golang-examples- 学习 Golang 的许多示例。
- Golangbot- Go 语言编程入门教程。
- GopherCoding- 代码片段和教程的集合,可帮助解决日常问题。
- GopherSnippets- 提供 Go 编程语言的代码片段、测试和可测试示例。
- Gosamples- 代码片段集合,可帮助您解决日常代码问题。
- 使用 Go 语言实现 GraphQL- 学习如何使用代码生成功能创建 Go GraphQL 服务器和客户端。还包括创建 REST 端点。
- Hackr.io- 通过 Go 语言编程社区提交和投票选出的最佳在线 Go 语言教程学习 Go 语言。
- Hex Monscape- 使用六边形架构编写可维护代码的入门指南。
- 如何进行基准测试:dbq vs sqlx vs GORM- 学习如何在 Go 中进行基准测试。我们将以 dbq、sqlx 和 GORM 为例进行基准测试。
- 如何使用 Docker 部署 Go Web 应用程序- 学习如何使用 Docker 进行 Go 开发以及如何构建生产 Docker 镜像。
- 如何在 Golang 中实现基于角色的访问控制 (RBAC) 授权- 一篇关于如何在 Golang 中实现基于角色的访问控制 (RBAC) 的指南,包括代码示例,涵盖了使用基于角色的授权来保护应用程序端点的各种方法。
- 如何在 Go 中使用 Godog 进行行为驱动开发- 开始使用 Godog - 一个用于构建和测试 Go 应用程序的行为驱动开发框架。
- 通过 1000 多个练习学习 Go 语言- 通过数千个示例、练习和测验学习 Go 语言。
- 使用 TDD 学习 Go- 使用测试驱动开发学习 Go。
- 通过实例学习 Go- 通过具体应用实例学习 Golang 语言的系列文章。
- 使用 Go 构建微服务- 深入了解使用 Go 构建微服务,包括 gRPC。
- package main- 关于 Go 编程的 YouTube 频道。
- 使用 Google Go 进行编程- Coursera 专业课程,从零开始学习 Go。
- 扩展 Go 应用程序- 关于在生产环境中构建、部署和扩展 Go 应用程序的一切。
- 世界上最简单的 Golang WebAssembly 入门教程
- 以可视化的方式理解围棋- 以可视化的方式学习围棋
- W3basic Go 教程- W3Basic 提供深入的教程和组织良好的内容来学习 Golang 编程。
- 你的 Go 基础教程- 大量教程和操作指南。