go语言是做什么的(盘点那些年让我们相爱恨晚的Go语言库)

音频和音乐

用于处理音频的库。

  • flac - 支持 FLAC 流的本机 Go FLAC 编码器/解码器。
  • gaad - 本机 Go AAC 比特流解析器。
  • GoAudio - 本机 Go 音频处理库。
  • gosamplerate - 用于 go 的 libsamplerate 绑定。
  • id3v2 -Go 的 ID3 解码和编码库。
  • malGo - 迷你音频库。
  • mINImp3 - 轻量级 MP3 解码器库。
  • music-theory -Go 中的音乐理论模型。
  • Oto - 在多个平台上播放声音的低级库。
  • PortAudio - PortAudio 音频 I/O 库的 Go 绑定。
身份验证和 OAuth

用于实现身份验证方案的库。

  • authboss - 用于 Web 的模块化身份验证系统。它试图尽可能多地删除样板文件和“困难的东西”,以便每次在 Go 中启动一个新的 Web 项目时,您都可以将其插入、配置并开始构建您的应用程序,而无需每次都构建身份验证系统。
  • branca - Golang 1.15 的布兰卡令牌规范实现.
  • casbin - 支持 ACL、RBAC、ABAC 等访问控制模型的授权库。
  • cookiestxt - 提供 cookies.txt 文件格式的解析器。
  • go-email-normalizer - Golang 库,用于提供电子邮件地址的规范表示。
  • go-guardian -Go-Guardian 是一个 golang 库,它提供了一种简单、干净和惯用的方式来创建强大的现代 API 和 Web 身份验证,支持 LDAP、Basic、Bearer 令牌和基于证书的身份验证。
  • go-jose - JOSE 工作组的 Json Web 令牌、JSON Web 签名和 JSON Web 加密规范的相当完整的实现。
  • gologin - 使用 OAuth1 和 OAuth2 身份验证提供程序登录的可链接处理程序。
  • gorbac - 在 Golang 中提供轻量级的基于角色的访问控制 (RBAC) 实现。
  • goth - 提供了一种简单、干净和惯用的方式来使用 OAuth 和 OAuth2。开箱即用地处理多个提供程序。
  • jeff - 具有可插拔后端的简单、灵活、安全和惯用的 Web 会话管理。
  • jwt - 轻量级 JSON Web 令牌 (JWT) 库。
  • jwt - 用于 Go 的安全、简单和快速的 JSON Web 令牌。
  • jwt-auth - 用于 Golang http 服务器的 JWT 中间件,具有许多配置选项。
  • loginsrv - 具有可插入后端的 JWT 登录微服务,例如 OAuth2 (Github)、htpasswd、osiam.
  • oauth2 - goauth2 的继任者。通用 OAuth 2.0 包,附带 JWT、Google API、Compute Engine 和 App Engine 支持。
  • osin -Golang OAuth2 服务器库。
  • otpgen - 生成 TOTP/HOTP 代码的库。
  • otpgo -Go的基于时间的一次性密码(TOTP)和基于 HMAC 的一次性密码(HOTP)库。
  • paseto - 平台无关安全令牌(PASETO)的 Golang 实现。
  • permissions2 - 用于跟踪用户、登录状态和权限的库。使用安全 cookie 和 bcrypt。
  • rbac - 用于 Go 应用程序的简约 RBAC 包。
  • scope - 在 Go 中轻松管理 OAuth2 范围。
  • scs - HTTP 服务器的会话管理器。
  • securecookie - 高效的安全 cookie 编码/解码。
  • Session - Web 服务器的 Go 会话管理(包括对 Google App Engine - GAE 的支持)。
  • sessiongate-go - 使用 SessionGate Redis 模块进行会话管理。
  • session - 用于 go http 服务器的简单、高性能、高度可定制的会话服务。
  • sessionup - 简单但有效的 HTTP 会话管理和识别包。
  • sjwt - 简单的 jwt 生成器和解析器。

go语言是做什么的(盘点那些年让我们相爱恨晚的Go语言库)(1)

回到顶部

区块链

构建区块链的工具。

  • cosmos-sdk - 在 Cosmos 生态系统中构建公共区块链的框架。
  • go-ethereum - 以太坊协议的官方 Go 实现。
  • gossamer - Polkadot 主机的 Go 实现。
  • solana-go - 与 Solana JSON RPC 和 WebSocket 接口交互的 Go 库。
  • endermint - 高性能中间件,用于使用 Tendermint 共识和区块链协议将用任何编程语言编写的状态机转换为拜占庭容错复制状态机。

go语言是做什么的(盘点那些年让我们相爱恨晚的Go语言库)(2)

回到顶部

机器人大楼

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

  • echotron - 一个优雅的并发库,用于 Go 中的 Telegram Bots。
  • ephemeral-roles - 一个 Discord 机器人,用于根据语音通道成员的存在来管理临时角色。
  • go-chat-bot - 用 Go 编写的 IRC、Slack 和 Telegram 机器人.
  • go-joe - 受 Hubot 启发但用 Go 编写的通用机器人库。
  • go-sarah - 为所需的聊天服务构建机器人的框架,包括 LINE、Slack、Gitter 等。
  • go-tgbot - 纯 Golang Telegram Bot API 包装器,由 swagger 文件、基于会话的路由器和中间件生成。
  • go-twitch-irc - 为 twitch.tv 聊天编写机器人的库
  • Golang CryptoTrading Bot - 用于加密货币交易的基于控制台的交易机器人的 golang 实现。
  • govkbot - 简单的 Go VK机器人库。
  • hanu - 编写 Slack 机器人的框架。
  • Kelp - Stellar DEX的官方交易和做市机器人。开箱即用,用 Golang 编写,与中心化交易所和自定义交易策略兼容。
  • 拉里- 拉里是一个非常简单的 Twitter 机器人生成器,它从 Go 内置的 Github 发布随机存储库。
  • margelet - 构建 Telegram 机器人的框架。
  • micha - 用于 Telegram bot api 的 Go 库。
  • olivia - 使用人工神经网络构建的聊天机器人。
  • slack-bot - 准备好为懒惰的开发人员使用 Slack Bot:自定义命令、Jenkins、Jira、Bitbucket、Github ......
  • slacker - 易于使用的框架来创建 Slack 机器人。
  • slackscot - 构建 Slack 机器人的另一个框架。
  • tbot - 具有类似于 net/http 的 API 的 Telegram 机器人服务器。
  • telebot - 用 Go 编写的 Telegram 机器人框架。
  • telego - Golang 的 Telegram Bot API 库,具有完整的一对一 API 实现。
  • telegram-bot-api - 简单干净的 Telegram bot 客户端。
  • teleterm - Telegram Bot Exec 终端命令。
  • Tenyks - 面向服务的 IRC 机器人,使用 Redis 和 JSON 进行消息传递。

go语言是做什么的(盘点那些年让我们相爱恨晚的Go语言库)(3)

go语言是做什么的(盘点那些年让我们相爱恨晚的Go语言库)(4)

构建自动化

帮助构建自动化的库和工具。

  • 1build - 命令行工具,可轻松管理特定于项目的命令。
  • anko - 多种编程语言的简单应用程序观察器。
  • gaper - 在 Go 项目崩溃或某些监视的文件更改时构建并重新启动它。
  • gilbert - 为 Go 项目构建系统和任务运行器。
  • goyek - 在 Go 中创建构建管道。
  • mage - Mage 是使用 Go 的类似 make/rake 的构建工具。
  • mmake - 现代品牌。
  • realize - Go build system with file watchers and live reload. Run, build and watch file changes with custom paths.
  • Task - simple "Make" alternative.
  • taskctl - Concurrent task runner.

go语言是做什么的(盘点那些年让我们相爱恨晚的Go语言库)(5)

back to top

Command LineAdvanced Console UIs

Libraries for building Console Applications and Console User Interfaces.

  • asciigraph - Go package to make lightweight ASCII line graph ╭┈╯ in command line apps with no other dependencies.
  • aurora - ANSI terminal colors that supports fmt.Printf/Sprintf.
  • box-cli-maker - Make Highly Customized Boxes for your CLI.
  • cfmt - Contextual fmt inspired by bootstrap color classes.
  • cfmt - 简单方便的格式化程式化输出,与 fmt 库完全兼容。
  • chalk - 用于美化终端/控制台输出的直观包。
  • colourize - 终端中 ANSI 颜色文本的 Go 库。
  • ctc - 非侵入式跨平台终端颜色库,无需修改 Print 方法。
  • go-ataman - 用于在终端中呈现 ANSI 彩色文本模板的 Go 库。
  • go-colorable - Windows 的可着色作家。
  • go-colortext - 用于终端颜色输出的 Go 库。
  • go-isatty - golang 的 isatty。
  • go-prompt - 受Python-prompt-toolkit启发,用于构建强大的交互式提示的库。
  • gocui - 旨在创建控制台用户界面的极简 Go 库。
  • gommon/color - 样式终端文本。
  • gookit/color - 终端显色工具库,支持16色、256色、RGB显色输出,兼容Windows。
  • 标记- 匹配和标记彩色终端输出的字符串的最简单方法。
  • mpb - 终端应用程序的多进度条。
  • progressbar - 适用于每个操作系统的基本线程安全进度条。
  • pterm - 一个库,用于美化每个平台上的控制台输出,具有许多可组合的组件。
  • simpletable - 带有 Go 的终端中的简单表。
  • spinner - Go 软件包,可以轻松地为终端微调器提供选项。
  • tabby - 一个用于超级简单 Golang 表的小型库。
  • table - 基于终端颜色的表格的小型库。
  • 表格- 从命令行实用程序打印 ASCII 表,无需将大量数据传递给 API。
  • termbox-go - Termbox 是一个用于创建跨平台基于文本的界面的库。
  • termdash - 基于termbox-go并受termui启发的 Go 终端仪表板。
  • termenv - 为您的终端应用程序提供高级 ANSI 样式和颜色支持。
  • termui - 基于termbox-go的 Go 终端仪表板,灵感来自blessed-contrib .
  • uilive - 用于实时更新终端输出的库。
  • uiprogress - 在终端应用程序中呈现进度条的灵活库。
  • uitable - 使用表格数据提高终端应用程序可读性的库。
  • yacspin - 另一个 CLi Spinner 包,用于使用终端微调器。

go语言是做什么的(盘点那些年让我们相爱恨晚的Go语言库)(6)

回到顶部

标准命令行界面

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

  • acmd - Go 中简单、有用且自以为是的 CLI 包。
  • argparse - 受 Python 的 argparse 模块启发的命令行参数解析器。
  • argv - 使用 bash 语法将命令行字符串拆分为参数数组的 Go 库。
  • carapace - spf13/cobra 的命令参数完成生成器。
  • carapace-bin - 多壳多命令参数完成器。
  • cli - 基于 golang 结构标签的功能丰富且易于使用的命令行包。
  • cli - 用于在 Go 中构建命令行界面的简单而完整的 API。
  • climax - 具有“人脸”的替代 CLI,本着 Go 命令的精神。
  • clîr - 一个简单明了的 CLI 库。无依赖。
  • cmd - 扩展标准flag包以支持子命令等惯用方式。
  • cmdr - 一个 POSIX/GNU 风格,类似于 getopt 的命令行 UI Go 库。
  • cobra - 现代 Go CLI 交互的指挥官。
  • command-chain - 用于配置和运行命令链的 go 库 - 例如 unix shell 中的流水线。
  • commandeer - 对开发人员友好的 CLI 应用程序:根据结构字段和标签设置标志、默认值和用法。
  • 完成- 在 Go Go 命令 bash 完成中编写 bash 完成。
  • Dnote - 具有多设备同步功能的简单命令行笔记本。
  • elvish - 一种富有表现力的编程语言和多功能交互式外壳。
  • env - 结构的基于标签的环境配置。
  • flag - Go 支持子命令的简单但强大的命令行选项解析库。
  • flaggy - 一个强大且惯用的标志包,具有出色的子命令支持。
  • flagvarflag - Go 标准包的标志参数类型的集合。
  • go-andotp - 用于加密/解密和 OTP文件的 CLI 程序。也可以用作图书馆。
  • go-arg -Go 中基于结构的参数解析。
  • go-commander -Go 库以简化 CLI 工作流程。
  • go-flags - go 命令行选项解析器。
  • go-getoptions - Go 选项解析器的灵感来自 Perl 的 GetOpt::Long 的灵活性。
  • gocmd - 用于构建命令行应用程序的 Go 库。
  • hiboot cli - 具有自动配置和依赖注入的 cli 应用程序框架。
  • job - JOB,把你的短期指挥变成长期的工作。
  • 主销- 支持子命令的命令行和标志解析器(由 ; 取代,kong见下文)。
  • liner - 用于命令行界面的类似 readline 的库。
  • mitchellh/cli - 用于实现命令行界面的 Go 库。
  • mow.cli - 用于构建具有复杂标志和参数解析和验证的 CLI 应用程序的 Go 库。
  • ops -Unikernel 构建器/协调器。
  • pflag - Go 的标志包的直接替代品,实现 POSIX/GNU 风格的 --flags.
  • sand - 用于创建解释器的简单 API 等等。
  • sflags - 用于 flag、urfave/cli、pflag、cobra、kingpin 和其他库的基于结构的标志生成器。
  • strumt - 创建提示链的库。
  • subcmd - 解析和运行子命令的另一种方法。与标准flag包一起工作。
  • ts - 时间戳转换和比较工具。
  • ukautz/clif - 小型命令行界面框架。
  • urfave/cli - 用于在 Go 中构建命令行应用程序的简单、快速且有趣的包(以前称为 codegangsta/cli)。
  • wlog - 简单的日志接口,支持跨平台颜色和并发。
  • wmenu - 易于使用的 cli 应用程序菜单结构,提示用户做出选择。

go语言是做什么的(盘点那些年让我们相爱恨晚的Go语言库)(7)

回到顶部

配置

用于配置解析的库。

  • aconfig - 简单、有用和固执己见的配置加载器。
  • cleanenv - 简约的配置阅读器(来自文件、ENV 和任何你想要的地方)。
  • config - 用于 Go 项目的轻量级但功能强大的配置包。
  • config - 云原生应用程序配置。仅用两行将 ENV 绑定到结构。
  • config - 带有环境变量和标志解析的 JSON 或 YAML 配置包装器。
  • configuration - 用于从 env 变量、文件、标志和“默认”标签初始化配置结构的库。
  • configure - 通过多个来源提供配置,包括 JSON、标志和环境变量。
  • configuro - 来自 ENV 和 Files 的自以为是的配置加载和验证框架,专注于 12-Factor 兼容的应用程序。
  • confita - 将配置从多个后端级联加载到一个结构中。
  • conflate - 用于合并来自任意 URL 的多个 JSON/YAML/TOML 文件的库/工具,针对 JSON 模式进行验证,以及应用模式中定义的默认值。
  • env - 将环境变量解析为 Go 结构(使用默认值)。
  • env - 用于将环境变量加载到结构中的轻量级包。
  • envcfg - 将环境变量解组到 Go 结构。
  • envconf - 来自环境的配置。
  • envconfig - 从环境变量中读取您的配置。
  • envh - 管理环境变量的助手。
  • fig - 用于从文件和环境变量(带有验证和默认值)读取配置的微型库。
  • gcfg - 将 INI 样式的配置文件读入 Go 结构;支持用户定义的类型和小节。
  • genv - 使用 dotenv 支持轻松读取环境变量。
  • go-aws-ssm - 从 AWS System Manager - Parameter Store 获取参数的 Go 包。
  • go-conf - 基于注释结构的应用程序配置的简单库。它支持从环境变量、配置文件和命令行参数中读取配置。
  • go-ini - 编组和解组 INI 文件的 Go 包。
  • go-ssm-config - 用于从 AWS SSM(参数存储)加载配置参数的 Go 实用程序。
  • go-up - 一个简单的配置库,具有递归占位符解析且没有魔法。
  • goConfig - 解析一个结构作为输入,并使用来自命令行、环境变量和配置文件的参数填充这个结构的字段。
  • godotenv - Ruby 的 dotenv 库的 Go 端口(从 加载环境变量.env).
  • gofigure - 轻松配置 Go 应用程序。
  • got/jconf - 模块化 JSON 配置。让您配置结构以及它们配置的代码并将解析委托给子模块,而不会牺牲完整的配置序列化。
  • gonfig - 基于标签的配置解析器,它将来自不同提供者的值加载到类型安全的结构中。
  • gookit/config - 应用程序配置管理(加载、获取、设置)。支持 JSON、YAML、TOML、INI、HCL。多文件加载,数据覆盖合并。
  • Harvester - Harvester,一个易于使用的静态和动态配置包,支持播种、环境变量和 Consul 集成。
  • hjson - 人类 JSON,人类的配置文件格式。轻松的语法,更少的错误,更多的评论。
  • hocon - 用于处理 HOCON(人类友好的 JSON 超集)格式的配置库,支持环境变量、引用其他值、注释和多个文件等功能。
  • ingo - 标志保留在类似 ini 的配置文件中。
  • ini - 用于读取和写入 INI 文件的包。
  • ini - INI 解析器和写入库,解组到结构,编组到 Json,写入文件,监视文件。
  • joshbetz/config - Go 的小型配置库,可解析环境变量、JSON 文件并在 SIGHUP 上自动重新加载。
  • kelseyhightower/envconfig - 用于管理来自环境变量的配置数据的 Go 库。
  • koanf - 轻量级、可扩展的库,用于读取 Go 应用程序中的配置。内置对 JSON、TOML、YAML、env、命令行的支持。
  • konfig - 分布式处理时代的 Go 的可组合、可观察和高性能配置处理。
  • kong - 命令行解析器,支持任意复杂的命令行结构和额外的配置源,例如 YAML、JSON、TOML 等(继任者kingpin)。
  • mini - 用于解析 ini 样式配置文件的 Golang 包。
  • nasermirzaei89/env - 用于读取环境变量的简单有用的包。
  • onion - 基于层的 Go 配置,支持 JSON、TOML、YAML、属性、etcd、env 和使用 PGP 的加密。
  • piper - 具有配置继承和密钥生成的 Viper 包装器。
  • store -Go 的轻量级配置管理器。
  • 交换- 基于构建环境递归地实例化/配置结构。(YAML、TOML、JSON 和环境)。
  • typenv - 简约、零依赖、类型化的环境变量库。
  • uConfig - 轻量级、零依赖和可扩展的配置管理。
  • viper - 使用尖牙进行配置。
  • XDG 基本目录规范和XDG 用户目录的xdg -Go 实现。
  • xdg - 遵循XDG 标准的跨平台包。

go语言是做什么的(盘点那些年让我们相爱恨晚的Go语言库)(8)

回到顶部

持续集成

帮助持续集成的工具。

  • CDS - 企业级 CI/CD 和 DevOps 自动化开源平台。
  • drone -Drone 是一个基于 Docker 的持续集成平台,用 Go 编写。
  • duci - 一个简单的 ci 服务器,不需要特定领域的语言。
  • gomason - 从干净的工作区测试、构建、签名和发布您的 go 二进制文件。
  • gotestfmt - 为人类进行测试输出。
  • govalls - Coveralls.io 连续代码覆盖跟踪系统的 Go 集成。
  • 工作服- Multi-Package go 项目封面配置文件,用于 goveralls 等工具。
  • roveralls - 递归覆盖测试工具。

go语言是做什么的(盘点那些年让我们相爱恨晚的Go语言库)(9)

回到顶部

CSS 预处理器

用于预处理 CSS 文件的库。

  • gcss - 纯 Go CSS 预处理器。
  • go-libSass - 包装 100% Sass 兼容的 libsass 项目。

go语言是做什么的(盘点那些年让我们相爱恨晚的Go语言库)(10)

回到顶部

数据结构

Go 中的通用数据结构和算法。

  • 2q - 2Q 内存缓存实现。
  • 算法- 算法和数据结构。CLRS 研究。
  • bingo - 将本机类型快速、零分配、保持字典顺序的打包成字节。
  • binpacker - 二进制打包器和解包器帮助用户构建自定义二进制流。
  • bit - Golang 设置数据结构,具有额外的位旋转功能。
  • bitmap - Go 中密集、零分配、启用 SIMD 的位图/位集。
  • bitset - 实现 bitset 的 Go 包。
  • Bloom - 实现 Bloom 过滤器的 Go 包。
  • Bloom - 在 Go 中实现的 Bloom 过滤器。
  • bloom -Golang 布隆过滤器实现。
  • bloomfilter - Go 中的另一个 Bloomfilter 实现,与 Java 的 Guava 库兼容.
  • boomfilters - 用于处理连续、无界流的概率数据结构。
  • cmap - go 的线程安全并发映射,支持interface{}用作键和自动扩展分片。
  • concurrent-writer - 高度并发的替代bufio.Writer.
  • conjungo - 一个小型、强大且灵活的合并库。
  • count-min-log -Go 实现 Count-Min-Log 草图:使用近似计数器进行近似计数(类似于 Count-Min 草图,但使用更少的内存).
  • crunch - Go 包实现用于轻松处理各种数据类型的缓冲区。
  • cuckoo-filter - Cuckoo 过滤器:一个全面的布谷鸟过滤器,与其他工具相比可配置和空间优化,原论文中提到的所有功能都可用。
  • cuckoofilter - Cuckoo 过滤器:Go 中实现的计数布隆过滤器的一个很好的替代品。
  • deque - 高度优化的双端队列。
  • deque - 快速环形缓冲区双端队列(双端队列)。
  • dict - 用于 Go 的类似 Python 的字典 (dict)。
  • dsu - Go 中的不相交集数据结构实现。
  • encoding -Go 的整数压缩库。
  • fsm - 有限状态机包。
  • gdcache - 一个由 golang 实现的纯非侵入式缓存库,您可以使用它来实现自己的分布式缓存。
  • go-adaptive-radix-tree - 自适应基数树的 Go 实现。
  • go-datastructures - 有用的、高性能的和线程安全的数据结构的集合。
  • go-edlib - 与 Unicode 兼容的 Go 字符串比较和编辑距离算法库(Levenshtein、LCS、Hamming、Damerau levenshtein、Jaro-Winkler 等)。
  • go-ef - Elias-Fano 编码的 Go 实现。
  • go-geoindex - 内存中的地理索引。
  • go-mcache - 快速的内存键:值存储/缓存库。指针缓存。
  • go-rquad - 具有高效点定位和邻居查找的区域四叉树。
  • gocache - 一个完整的 Go 缓存库,具有多个存储(内存、memcache、redis ......)、可链接、可加载、指标缓存等。
  • goconcurrentqueue - 并发 FIFO 队列。
  • 众神- Go 数据结构。容器、集合、列表、堆栈、地图、BidiMaps、树、HashSet 等。
  • gofal - Go 的分数 api。
  • golang-set -Go 的线程安全和非线程安全高性能集。
  • goset - 一个有用的 Go 集合集合实现。
  • goskiplist -Go中的跳过列表实现。
  • gostl - go 的数据结构和算法库,旨在提供类似于 C STL 的功能。
  • gota - Go 的数据帧、系列和数据整理方法的实现。
  • geterator - 提供 map 和 reduce 功能的迭代器实现。
  • hashsplit - 将字节流拆分成块,并将块排列成树,边界由内容决定,而不是位置。
  • hide - 带有编组到/来自散列的 ID 类型,以防止向客户端发送 ID。
  • hilbert - Go 包,用于将值映射到空间填充曲线,例如 Hilbert 和 Peano 曲线。
  • hyperloglog - 具有 Sparse、LogLog-Beta 偏差校正和 TailCut 空间减少的 HyperLogLog 实现.
  • iter - C STL 迭代器和算法的 Go 实现。
  • levenshtein - Levenshtein 距离和相似度指标,具有可定制的编辑成本和通用前缀的 Winkler 式奖金。
  • levenshtein - 在 Go 中计算 levenshtein 距离的实现。
  • memlog - 受 Apache Kafka 启发的易于使用、轻量级、线程安全且仅追加的内存数据结构。
  • merkle - Merkle 根哈希和包含证明的空间高效计算。
  • merkletree - merkle 树的实现,提供对数据结构内容的有效和安全的验证。
  • mspm - 用于信息检索的多字符串模式匹配算法。
  • nan - 一个库中的零分配 Nullable 结构,具有方便的转换功能、编组器和解组器。
  • null - 可以编组/解组到 JSON 的可空 Go 类型。
  • ordered-concurrently - Go 模块,它同时处理工作并按输入顺序在通道中返回输出。
  • parapipe - FIFO 管道,在每个阶段并行执行,同时保持消息和结果的顺序。
  • parsefields - 用于解析类似 JSON 的日志以收集唯一字段和事件的工具。
  • 管道- 具有扇入和扇出的管道实现。
  • ptrie - 前缀树的实现。
  • remember-go - 用于缓存慢速数据库查询的通用接口(由 redis、memcached、ristretto 或 in-memory 支持)。
  • ring - 高性能、线程安全的布隆过滤器的 Go 实现。
  • roaring - 实现压缩位集的 Go 包。
  • set - Go 中使用 LinkedHashMap 的简单集合数据结构实现。
  • skiplist - 非常快的 Go Skiplist 实现。
  • skiplist -Go 中的 Skiplist 实现。
  • slices - 对切片进行操作的函数;喜欢package strings但适用于切片。
  • timedmap - 带有过期键值对的映射。
  • treap - 使用树堆的持久、快速有序的地图。
  • treemap - 在引擎盖下使用红黑树的通用键排序图。
  • trie - Go 中的 Trie 实现。
  • ttlcache - 具有项目过期和泛型的内存缓存。
  • typ - Null 类型、安全的原始类型转换和从复杂结构中获取值。

go语言是做什么的(盘点那些年让我们相爱恨晚的Go语言库)(11)

回到顶部

数据库

用 Go 实现的数据库。

  • badger -Go 中的快速键值存储。
  • bbolt - Go 的嵌入式键/值数据库。
  • bcache - 最终一致的分布式内存缓存 Go 库。
  • BigCache - 用于千兆字节数据的高效键/值缓存。
  • Bitcask -Bitcask 是一个可嵌入、持久且快速的键值 (KV) 数据库,用纯 Go 编写,具有可预测的读/写性能、低延迟和高吞吐量,这要归功于 bitcask 磁盘布局 (LSM WAL)。
  • buntdb - 用于 Go 的快速、可嵌入的内存键/值数据库,具有自定义索引和空间支持。
  • 缓存- 内存中键:具有过期时间、0 依赖项、<100 LoC、100% 覆盖率的值存储。
  • cache2go - 内存中键:值缓存,支持基于超时自动失效。
  • clover - 用纯 Golang 编写的轻量级的面向文档的 NoSQL 数据库。
  • clusteredBigCache - 具有集群支持和单个项目到期的 BigCache。
  • cockroach - 可扩展的、地理复制的、事务性数据存储。
  • Coffer - 支持事务的简单 ACID 键值数据库。
  • column - 具有位图索引和事务的高性能、列式、可嵌入内存存储。
  • couchcache - 由 Couchbase 服务器支持的 RESTful 缓存微服务。
  • CovenantSQL - CovenantSQL 是区块链上的 SQL 数据库。
  • Databunker - 为遵守 GDPR 和 CCPA 而构建的个人身份信息 (PII) 存储服务。
  • dgraph - 可扩展、分布式、低延迟、高吞吐量的图形数据库。
  • diskv - 本土磁盘支持的键值存储。
  • dtf - 分布式事务管理器。支持 XA、TCC、SAGA、可靠消息。
  • eliasdb - 具有 REST API、短语搜索和类似 SQL 的查询语言的无依赖、事务性图形数据库。
  • fastcache - 用于大量条目的快速线程安全内存缓存。最小化 GC 开销。
  • GCache - 支持过期缓存、LFU、LRU 和 ARC 的缓存库。
  • go-cache - Go 的内存中键:值存储/缓存(类似于 Memcached)库,适用于单机应用程序。
  • godis - Golang 实现的高性能 Redis 服务器和集群。
  • goleveldb - 在 Go 中实现LevelDB键/值数据库。
  • groupcache - Groupcache 是一个缓存和缓存填充库,旨在在许多情况下替代 memcached。
  • hare - 一个简单的数据库管理系统,将每个表存储为行分隔的 JSON 文本文件。
  • immudb - immudb 是用于用 Go 编写的系统和应用程序的轻量级、高速不可变数据库。
  • influxdb - 用于指标、事件和实时分析的可扩展数据存储。
  • Kivik - Kivik 为 CouchDB、PouchDB 和类似数据库提供了一个通用的 Go 和 GopherJS 客户端库。
  • ledisdb - Ledisdb 是一个类似于 Redis 的高性能 NoSQL,基于 LevelDB.
  • levigo - Levigo 是 LevelDB 的 Go 包装器.
  • lotusdb - 与 lsm 和 b tree 兼容的快速 k/v 数据库。
  • Milvus - Milvus 是一个用于嵌入管理、分析和搜索的矢量数据库。
  • moss -Moss 是一个简单的 LSM 键值存储引擎,用 100% Go 编写。
  • nutsdb - Nutsdb 是一个用纯 Go 编写的简单、快速、可嵌入、持久的键/值存储。它支持完全可序列化的事务和许多数据结构,例如列表、集合、排序集合。
  • piladb - 基于堆栈数据结构的轻量级 RESTful 数据库引擎。
  • pogreb - 用于读取繁重工作负载的嵌入式键值存储。
  • prometheus - 监控系统和时间序列数据库。
  • pudge - 使用 Go 的标准库编写的快速简单的键/值存储。
  • rosedb - 基于 LSM WAL 的嵌入式 kv 数据库,支持 string、list、hash、set、zset。
  • rqlite - 基于 SQLite 构建的轻量级分布式关系数据库。
  • Scribble - 微型平面文件 JSON 存储。
  • tempdb - 临时项目的键值存储。
  • tidb - TiDB 是一个分布式 SQL 数据库。灵感来自 Google F1 的设计。
  • tiedot - 由 Golang 提供支持的 NoSQL 数据库。
  • ttlcache - 内存中键值存储,每条记录都有 TTL。
  • unitdb - 用于物联网、实时消息传递应用程序的快速时间序列数据库。使用 github.com/unit-io/unitd 应用程序通过 tcp 或 websocket 使用 pubsub 访问 unitdb。
  • Vasto - 分布式高性能键值存储。在磁盘上。最终一致。哈。能够在不中断服务的情况下增长或缩小。
  • VictoriaMetrics - 快速、资源有效且可扩展的开源时间序列数据库。可用作 Prometheus 的长期远程存储。支持 PromQL。

数据库模式迁移。

  • atlas - 一个数据库工具包。旨在帮助公司更好地处理数据的 CLI。
  • avro - 发现 SQL 模式并将它们转换为 AVRO 模式。将 SQL 记录查询为 AVRO 字节。
  • darwin -Go 的数据库模式演变库。
  • go-fixtures - Golang 优秀的内置数据库/sql 库的 Django 样式夹具。
  • go-pg-migrate - 用于 go-pg 迁移管理的 CLI 友好包。
  • go-pg-migrations - 一个 Go 包,用于帮助使用 go-pg/pg 编写迁移。
  • goavro - 一个对 Avro 数据进行编码和解码的 Go 包。
  • godfish - 数据库迁移管理器,使用原生查询语言。支持 cassandra、mysql、postgres、sqlite3。
  • goose - 数据库迁移工具。您可以通过创建增量 SQL 或 Go 脚本来管理数据库的演变。
  • gormigrate -Gorm ORM 的数据库模式迁移助手。
  • migrate - 数据库迁移。CLI 和 Golang 库。
  • 迁移器- 死的简单 Go 数据库迁移库。
  • migrator - MySQL 数据库迁移器,旨在运行迁移到您的功能并使用直观的 go 代码管理数据库模式更新。
  • pravasan - 简单的迁移工具 - 目前用于 MySQL,但计划很快支持 Postgres、SQLite、MongoDB 等。
  • schema - 用于在 Go 二进制文件中嵌入数据库/sql 兼容数据库的模式迁移的库。
  • skeema - MySQL 的纯 SQL 模式管理系统,支持分片和外部在线模式更改工具。
  • soda - 用于 MySQL、PostgreSQL 和 SQLite 的数据库迁移、创建、ORM 等。
  • sql-migrate - 数据库迁移工具。允许使用 go-bindata 将迁移嵌入到应用程序中。
  • sqlize - 数据库迁移生成器。允许通过不同的方式从模型和现有 sql 生成 sql 迁移。

数据库工具。

  • chproxy - ClickHouse 数据库的 HTTP 代理。
  • clickhouse-bulk - 收集小型插入并将大型请求发送到 ClickHouse 服务器。
  • datagen - 一种快速数据生成器,支持多表并支持多行 DML。
  • dbbench - 支持多个数据库和脚本的数据库基准测试工具。
  • go-mysql - 用于处理 MySQL 协议和复制的工具集。
  • go-mysql-elasticsearch - 将您的 MySQL 数据自动同步到 Elasticsearch.
  • kingshard - kingshard 是由 Golang 提供支持的 MySQL 的高性能代理.
  • myreplication - MySql 二进制日志复制侦听器。支持基于语句和行的复制。
  • octillery - 用于分片数据库的 Go 包(支持每个 ORM 或原始 SQL)。
  • orchestrator - MySQL 复制拓扑管理器和可视化器。
  • pg_timetable - PostgreSQL 的高级调度。
  • pgweb - 基于 Web 的 PostgreSQL 数据库浏览器。
  • prep - 在不更改代码的情况下使用准备好的 SQL 语句。
  • perst - 简化和加速开发,在任何 Postgres 应用程序(现有的或新的)上即时、实时、高性能。
  • rdb - 用于二次开发和内存分析的 Redis RDB 文件解析器。
  • rwdb - rwdb 为多个数据库服务器设置提供读取副本功能。
  • vitess - vitess 提供有助于扩展 MySQL 数据库以实现大规模 Web 服务的服务器和工具。

SQL 查询构建器,用于构建和使用 SQL 的库。

  • bqb - 轻量级且易于学习的查询构建器。
  • buildsqlx - 用于 PostgreSQL 的 Go 数据库查询构建器库。
  • dbq - Go 的零样板数据库操作。
  • Dotsql - Go 库,可帮助您将 sql 文件保存在一个地方并轻松使用它们。
  • gendry - 非侵入性 SQL 构建器和强大的数据绑定器。
  • godbal - 用于 Go 的数据库抽象层(dbal)。支持SQL builder,轻松获取结果。
  • goqu - 惯用的 SQL 构建器和查询库。
  • gosql - 具有更好的空值支持的 SQL 查询构建器。
  • hasql - 用于访问多主机 SQL 数据库安装的库。
  • igor - PostgreSQL 的抽象层,支持高级功能并使用类似 gorm 的语法。
  • jet - 用于在 Go 中编写类型安全 SQL 查询的框架,能够轻松地将数据库查询结果转换为所需的任意对象结构。
  • mpath - 用于 SQL 记录的 MPTT(修改前序树遍历)包 - 物化路径实现。
  • ormlite - 轻量级包,包含一些类似 ORM 的功能和 sqlite 数据库的帮助程序。
  • ozzo-dbx - 强大的数据检索方法以及与数据库无关的查询构建功能。
  • qry - 使用原始 SQL 查询从文件生成常量的工具。
  • sq - Go 的类型安全 SQL 构建器和结构映射器。
  • sqlf - 快速 SQL 查询生成器。
  • sqlingo - 在 Go 中构建 SQL 的轻量级 DSL。
  • sqrl - SQL 查询构建器,Squirrel 的分支,具有改进的性能。
  • Squalus - Go SQL 包上的薄层,可以更轻松地执行查询。
  • Squirrel - 帮助您构建 SQL 查询的 Go 库。
  • xo - 根据现有模式定义或支持 PostgreSQL、MySQL、SQLite、Oracle 和 Microsoft SQL Server 的自定义查询为数据库生成惯用的 Go 代码。

go语言是做什么的(盘点那些年让我们相爱恨晚的Go语言库)(12)

回到顶部

数据库驱动程序

用于连接和操作数据库的库。

  • 关系数据库
    • avatica - 用于数据库/sql 的 Apache Avatica/Phoenix SQL 驱动程序。
    • bgc - 适用于 Go 的 BigQuery 的数据存储连接。
    • firebirdsql -Go 的 Firebird RDBMS SQL 驱动程序。
    • go-adodb - 使用数据库/sql 的 Microsoft ActiveX 对象数据库驱动程序。
    • go-mssqldb - 用于 Go 的 Microsoft MSSQL 驱动程序。
    • go-oci8 - 使用数据库/sql 的 Oracle 驱动程序。
    • go-sql-driver/mysql -Go 的 MySQL 驱动程序。
    • go-sqlite3 - 使用数据库/sql 的 go 的 SQLite3 驱动程序。
    • godror - 用于 Go 的 Oracle 驱动程序,使用 ODPI-C 驱动程序。
    • gofreetds - Microsoft MSSQL 驱动程序。在FreeTDS上进行包装。
    • pgx - PostgreSQL 驱动程序支持超出数据库/sql 公开的功能。
    • pig - 简单的pgx包装器,可以轻松地执行和扫描查询结果。
    • pq - 用于数据库/sql 的纯 Go Postgres 驱动程序。
    • Squinn-Go - 纯 Go 的 SQLite.
    • sqlhooks - 将挂钩附加到任何数据库/sql 驱动程序。
  • NoSQL 数据库
    • aerospike-client-go -Go 语言的 Aerospike 客户端。
    • arangolite -ArangoDB的轻量级 golang 驱动程序。
    • asc - 适用于 Aerospike 的数据存储连接。
    • Forestdb -ForestDB的 Go 绑定。
    • go-couchbase -Go中的 Couchbase 客户端。
    • go-pilosa -Pilosa 的Go 客户端库.
    • go-rejson - 使用 Redigo golang 客户端的 redislabs 的 ReJSON 模块的 Golang 客户端。在 redis 中轻松地将结构存储和操作为 JSON 对象。
    • gocb - 官方 Couchbase Go SDK。
    • gocosmosdatabase/sql - Azure Cosmos DB 的REST 客户端和标准驱动程序。
    • gocql - Apache Cassandra 的 Go 语言驱动程序。
    • godis - 受 jedis 启发,由 golang 实现的 redis 客户端。
    • godscache - Google Cloud Platform Go Datastore 包的包装器,它使用 memcached 添加缓存。
    • gomemcache - Go 编程语言的 memcache 客户端库。
    • gorethink - RethinkDB 的 Go 语言驱动程序。
    • goriak - Riak KV 的 Go 语言驱动程序。
    • mgm - Go 的基于 MongoDB 模型的 ODM(基于官方 MongoDB 驱动程序).
    • mgo - Go 语言的(未维护的)MongoDB 驱动程序,它在遵循标准 Go 习惯用法的非常简单的 API 下实现了丰富且经过良好测试的功能选择。
    • mongo-go-driver -Go 语言的官方 MongoDB 驱动程序。
    • neo4j -Golang的 Neo4j Rest API 绑定.
    • Neo4j-GO -golang 中的 Neo4j REST 客户端.
    • neoism -Golang的 Neo4j 客户端。
    • qmgo - Go 的 MongoDB 驱动程序。它基于官方的 MongoDB 驱动程序,但像 Mgo 一样更易于使用。
    • redeo - Redis 协议兼容的 TCP 服务器/服务。
    • redigo - Redigo 是 Redis 数据库的 Go 客户端。
    • redis - Golang 的 Redis 客户端。
    • rueidis - 具有自动流水线和服务器辅助客户端缓存的快速 Redis RESP3 客户端。
    • xredis - 类型安全、可定制、干净且易于使用的 Redis 客户端。
  • 搜索和分析数据库。
    • bleve - 用于 Go 的现代文本索引库。
    • elastic - Go 的 Elasticsearch 客户端。
    • elasticsql - 在 Go 中将 sql 转换为 elasticsearch dsl.
    • elastigo - Elasticsearch 客户端库。
    • go-elasticsearch -Go 的官方 Elasticsearch 客户端。
    • go - 与 Elasticsearch 交互的库。
    • riot - 开源、分布式、简单高效的搜索引擎。
    • skizze - 概率数据结构服务和存储。
  • 多个后端。
    • cachego - 用于多个驱动程序的 Golang 缓存组件。
    • cayley - 支持多个后端的图形数据库。
    • dsc - SQL、NoSQL、结构化文件的数据存储连接。
    • gokv - Go 的简单键值存储抽象和实现(Redis、Consul、etcd、bbolt、BadgerDB、LevelDB、Memcached、DynamoDB、S3、PostgreSQL、MongoDB、CockroachDB 等等)。

go语言是做什么的(盘点那些年让我们相爱恨晚的Go语言库)(13)

错误处理日期和时间

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

  • carbon - 一个简单、语义化且对开发人员友好的 golang 日期时间包。
  • carbon - 具有许多实用方法的简单时间扩展,从 PHP Carbon 库移植。
  • cronrange - 解析 Cron 风格的时间范围表达式,检查给定时间是否在任何范围内。
  • 日期- 增加使用日期、日期范围、时间跨度、时段和时间的时间。
  • dateparse - 在事先不知道格式的情况下解析日期。
  • durafmt - Go 的持续时间格式化库。
  • feiertage - 一组计算德国公共假期的函数,包括。德国(Bundesländer)各州的专业化。比如复活节、五旬节、感恩节……
  • go-persian-calendar -Go(golang)中波斯(太阳回历)日历的实现.
  • go-str2duration - 将字符串转换为持续时间。支持 time.Duration 返回字符串等。
  • go-sunrise - 计算给定位置的日出和日落时间。
  • go-week - 处理 ISO8601 周日期的有效软件包。
  • gostradamus - 用于处理日期的 Go 包。
  • iso8601 - 无需正则表达式即可有效解析 ISO8601 日期时间。
  • kair - 日期和时间 - Golang 格式库。
  • now - 现在是 golang 的时间工具包。
  • NullTime - 可空time.Time。
  • strftime - C99 兼容的 strftime 格式化程序。
  • 时间跨度- 用于与时间间隔进行交互,定义为开始时间和持续时间。
  • timeutil - 对 golang 时间包的有用扩展(Timedelta,Strftime,...)。
  • tuesday - Ruby 兼容的 Strftime 函数。

go语言是做什么的(盘点那些年让我们相爱恨晚的Go语言库)(14)

形式分布式系统

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

  • arpc - 更有效的网络通信,支持双向呼叫、通知、广播。
  • celeriac - 添加对交互和监控 Celery 工作人员、Go 中的任务和事件的支持的库。
  • 一致的 - 有界负载的一致散列。
  • 一致哈希 - 具有可配置副本的一致哈希。
  • dht -BitTorrent Kademlia DHT 实现。
  • digota - grpc 电子商务微服务。
  • dot - 使用操作转换/OT 的分布式同步。
  • doublejump - 改进的 Google 跳转一致哈希。
  • Dragonboat -Go中功能完整且高性能的多组 Raft 库。
  • drmaa - 基于 DRMAA 标准的集群调度程序的作业提交库。
  • dynamolock - DynamoDB 支持的分布式锁定实现。
  • dynatomic - 使用 DynamoDB 作为原子计数器的库。
  • emitter-io - 使用 MQTT、Websockets 和 love 构建的高性能、分布式、安全和低延迟的发布-订阅平台。
  • failured - 分布式系统的自适应应计故障检测器。
  • flowgraph - 基于流的编程包。
  • gleam - 用纯 Go 和 Luajit 编写的快速且可扩展的分布式 map/reduce 系统,结合了 Go 的高并发性和 Luajit 的高性能,可以独立运行或分布式运行。
  • glow - 易于使用的可扩展分布式大数据处理、Map-Reduce、DAG 执行,全部在纯 Go 中。
  • gmsec - Go 分布式系统开发框架。
  • go-doudou - 一个基于 gossip 协议和 OpenAPI 3.0 规范的去中心化微服务框架。专注于低代码和快速开发的内置 go-doudou cli 可以提高您的生产力。
  • go-health - 用于在您的服务中启用异步依赖健康检查的库。
  • go-jump - 谷歌“跳转”一致性哈希函数的端口。
  • go-kit - 支持服务发现、负载平衡、可插拔传输、请求跟踪等的微服务工具包。
  • go-micro - 分布式系统开发框架。
  • go-mysql-lock - 基于 MySQL 的分布式锁。
  • go-pdu - 一个分散的基于身份的社交网络。
  • go-sundheit - 一个库,旨在为定义 golang 服务的异步服务健康检查提供支持。
  • go-zero - 一个 web 和 rpc 框架。它的诞生是为了通过弹性设计确保繁忙站点的稳定性。内置 goctl 大大提高了开发效率。
  • gorpc - 用于高负载的简单、快速和可扩展的 RPC 库。
  • grpc-go - gRPC 的 Go 语言实现。基于 HTTP/2 的 RPC。
  • hprose - 非常新的 RPC 库,现在支持 25 多种语言。
  • jsonrpc - jsonrpc 包帮助实现 JSON-RPC 2.0.
  • jsonrpc - JSON-RPC 2.0 HTTP 客户端实现。
  • Kratos - Go 中模块化设计且易于使用的微服务框架。
  • liftbridge - 用于 NATS 的轻量级、容错消息流。
  • lura - 带有中间件的超高性能 API 网关框架。
  • micro - 云及其他分布式系统运行时。
  • NATS - 用于微服务、物联网和云原生系统的轻量级、高性能消息传递系统。
  • outboxer - Outboxer 是一个实现发件箱模式的 go 库。
  • pglock - PostgreSQL 支持的分布式锁定实现。
  • pjrpc - 带有 Protobuf 规范的 Golang JSON-RPC 服务器客户端。
  • raft - Raft 共识协议的 Golang 实现,由 HashiCorp.
  • raft - 由 CoreOS 实现 Raft 共识协议。
  • rain -BitTorrent 客户端和库。
  • redis-lock - 使用 Redis 的简化分布式锁定实现。
  • resgate - 用于构建 REST、实时和 RPC API 的实时 API 网关,所有客户端都在其中无缝同步。
  • ringpop-go -Go 应用程序的可扩展、容错应用层分片。
  • rpcx - 类似于阿里巴巴 Dubbo 的分布式可插拔 RPC 服务框架。
  • Semaphore - 一个简单的(微)服务编排器。
  • sleuth - 用于无主 p2p 自动发现和 HTTP 服务之间的 RPC 的库(使用ZeroMQ)。
  • torrent -BitTorrent 客户端软件包。

go语言是做什么的(盘点那些年让我们相爱恨晚的Go语言库)(15)

回到顶部

动态 DNS

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

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

go语言是做什么的(盘点那些年让我们相爱恨晚的Go语言库)(16)

回到顶部

电子邮件

实现电子邮件创建和发送的库和工具。

  • chasquid - 用 Go 编写的 SMTP 服务器。
  • douceur - 用于 HTML 电子邮件的 CSS 内联器。
  • email - 一个强大而灵活的 Go 电子邮件库。
  • email-verifier - 用于电子邮件验证的 Go 库,无需发送任何电子邮件。
  • go-dkim - DKIM 库,用于签名和验证电子邮件。
  • go-email-validator - 用于语法、一次性、smtp 等检查的模块化电子邮件验证器。
  • go-imap - 用于客户端和服务器的 IMAP 库。
  • go-message - Internet 消息格式和邮件消息的流媒体库。
  • go-premailer -Go中 HTML 邮件的内联样式。
  • go-simple-mail - 使用 SMTP Keep Alive 和两个超时发送电子邮件的非常简单的包:连接和发送。
  • Hectane - 提供 HTTP API 的轻量级 SMTP 客户端。
  • hermes - 生成干净、响应式 HTML 电子邮件的 Golang 包。
  • mailchain - 将加密的电子邮件发送到用 Go 编写的区块链地址。
  • mailgun-go - 使用 Mailgun API 发送邮件的 Go 库。
  • MailHog - 使用 Web 和 API 接口进行电子邮件和 SMTP 测试。
  • mailx -Mailx 是一个库,可以更轻松地通过 SMTP 发送电子邮件。它是对 golang 标准库的增强net/smtp。
  • SendGrid - SendGrid 用于发送电子邮件的 Go 库。
  • smtp - SMTP 服务器协议状态机。
  • smtpmock - 轻量级的可配置多线程假 SMTP 服务器。为您的测试环境模拟任何 SMTP 行为。
  • truemail-go - 可配置的 Golang 电子邮件验证器/验证器。通过 Regex、DNS、SMTP 等验证电子邮件。

go语言是做什么的(盘点那些年让我们相爱恨晚的Go语言库)(17)

回到顶部

可嵌入的脚本语言

在你的 go 代码中嵌入其他语言。

  • anko - 用 Go 编写的脚本解释器。
  • binder - 转到基于gopher-lua的 Lua 绑定库。
  • cel-go - 快速、便携、非图灵完整的表达式评估,带有渐进式输入。
  • ecal - 一种简单的可嵌入脚本语言,支持并发事件处理。
  • expr - Go 的表达式评估引擎:快速、非图灵完备、动态类型、静态类型。
  • gentee - 可嵌入的脚本编程语言。
  • gisp -Go中的简单 LISP。
  • go-duktape - Go 的 Duktape JavaScript 引擎绑定。
  • go-lua - Lua 5.2 VM 到纯 Go 的端口。
  • go-php -Go 的 PHP 绑定。
  • go-python - 天真的 go 绑定到 CPython C-API。
  • goja -Go 中的ECMAScript 5.1( ) 实现。
  • golua - Lua C API 的 Go 绑定。
  • gopher-lua - 用 Go 编写的 Lua 5.1 VM 和编译器.
  • gval - 用 Go 编写的高度可定制的表达式语言。
  • metacall - 支持 NodeJS、JavaScript、TypeScript、Python、Ruby、C#、WebAssembly、Java、Cobol 等的跨平台 Polyglot 运行时。
  • ngaro - 可嵌入的 Ngaro VM 实现在 Retro 中启用脚本。
  • prolog - 可嵌入的 Prolog。
  • purl - 嵌入在 Go 中的 Perl 5.18.2.
  • tengo - Go 的字节码编译脚本语言。

go语言是做什么的(盘点那些年让我们相爱恨晚的Go语言库)(18)

回到顶部

错误处理

用于处理错误的库。

  • emperror - Go 库和应用程序的错误处理工具和最佳实践。
  • eris - 在 Go 中处理、跟踪和记录错误的更好方法。兼容标准错误库和 github.com/pkg/errors。
  • errlog - 确定错误源代码的​可破解包(以及其他一些快速调试功能)。可就地插入任何记录器。
  • errors - 标准库错误包和 github.com/pkg/errors 的直接替换。提供各种错误处理原语。
  • errors - 提供简单错误处理原语的包。
  • errors - 使用分类原语进行简单的 golang 错误处理。
  • errors - 最简单的错误包装器,具有出色的性能和最小的内存开销。
  • errors - 用于构建 Go 错误的直接替换。这是一个最小的错误处理包,带有自定义错误类型、用户友好的消息、Unwrap & Is。具有非常易于使用和直接的辅助功能。
  • errorx - 一个功能丰富的错误包,带有堆栈跟踪、错误组合等。
  • Falcon - 一个简单但功能强大的错误处理包。
  • go-multierror - Go (golang) 包,用于将错误列表表示为单个错误。
  • tracerr - 堆栈跟踪和源代码片段的 Golang 错误。

go语言是做什么的(盘点那些年让我们相爱恨晚的Go语言库)(19)

回到顶部

文件处理

用于处理文件和文件系统的库。

  • afero -Go的文件系统抽象系统。
  • afs - Go 的抽象文件存储(mem、scp、zip、tar、云:s3、gs)。
  • baraka - 一个轻松处理 http 文件上传的库。
  • bigfile - 文件传输系统,支持使用 http api、rpc 调用和 ftp 客户端管理文件。
  • 校验和- 计算大文件的消息摘要,如 MD5、SHA256、SHA1、CRC 或 BLAKE2s。
  • 复制- 递归复制目录。
  • flop - 文件操作库,旨在与GNU cp镜像功能奇偶校验。
  • gdu - 带有控制台界面的磁盘使用分析器。
  • go-csv-tag - 使用标签加载 csv 文件。
  • go-decent-copy - 为人类复制文件。
  • go-exiftool - ExifTool 的 Go 绑定,ExifTool 是著名的库,用于从文件(图片、PDF、办公室等)中提取尽可能多的元数据(EXIF、IPTC 等).
  • go-gtfs - 在 go 中加载 gtfs 文件。
  • gofs - 开箱即用的文件同步工具。
  • gut/yos - 简单可靠的文件操作包,例如文件、目录和符号链接上的复制/移动/差异/列表。
  • higgs - 一个小型跨平台 Go 库,用于隐藏/取消隐藏文件和目录。
  • notify - 具有简单 API 的文件系统事件通知库,类似于 os/signal.
  • opc - 为 Go 加载开放打包约定 (OPC) 文件。
  • parquet - 读取和写入parquet文件。
  • pathtype - 将路径视为自己的类型,而不是使用字符串。
  • pdfcpu - PDF 处理器。
  • skywalker - 允许一个人轻松地同时通过文件系统的软件包。
  • stl - 用于读取和写入 STL(立体光刻)文件的模块。用于读取的并发算法。
  • tarfs - tar 文件FileSystem接口的实现。
  • todotxt - Gina Trapani 的todo.txt文件的 Go 库,支持解析和操作todo.txt格式的任务列表。
  • vfs - 一组可插入、可扩展和自以为是的文件系统功能,用于 Go 跨多种文件系统类型,如 os、S3 和 GCS。

go语言是做什么的(盘点那些年让我们相爱恨晚的Go语言库)(20)

回到顶部

金融的

会计和财务软件包。

  • 会计- golang 的货币和货币格式。
  • ach - 自动票据交换所 (ACH) 文件的读取器、写入器和验证器。
  • 货币- 处理货币金额,提供货币信息和格式。
  • currency - 高性能和准确的货币计算包。
  • decimal - 任意精度的定点十进制数。
  • fastme - 快速可扩展匹配引擎 Go 实现。
  • go-finance -Go 中的综合金融市场数据。
  • go-finance - 货币时间价值(年金)、现金流、利率转换、债券和折旧计算的财务函数库。
  • go-finance - 获取汇率、通过 VIES 检查增值税号和检查 IBAN 银行帐号的模块。
  • go-finnhub - 来自 finnhub.io 的股票市场、外汇和加密数据客户端。访问来自 60 多家证券交易所、10 家外汇经纪商和 15 多家加密货币交易所的实时金融市场数据。
  • go-money - 福勒金钱模式的实现。
  • ofxgo - 查询 OFX 服务器和/或解析响应(使用示例命令行客户端)。
  • orderbook - Golang 中限价订单簿的匹配引擎。
  • payme - 用于 SEPA 付款的 QR 码生成器(ASCII 和 PNG)。
  • sleet - 多个支付服务提供商 (PsP) 处理在线支付的统一接口。
  • techan - 具有高级市场分析和交易策略的技术分析库。
  • ticker - 终端股票观察者和股票头寸跟踪器。
  • transaction - 嵌入式帐户事务数据库,以多线程模式运行。
  • 增值税- 增值税号验证和欧盟增值税税率。

go语言是做什么的(盘点那些年让我们相爱恨晚的Go语言库)(21)

回到顶部

形式

用于处理表单的库。

  • bind - 将表单数据绑定到任何 Go 值。
  • binding - 将来自 net/http 请求的表单和 JSON 数据绑定到结构。
  • 符合- 检查用户输入。基于结构标签修剪、清理和清理数据。
  • form - 将 url.Values 解码为 Go 值,并将 Go 值编码为 url.Values。双阵列和全地图支持。
  • formam - 将表单的值解码为结构。
  • forms - 与框架无关的库,用于解析和验证支持多部分表单和文件的表单/JSON 数据。
  • gorilla/csrf - Go Web 应用程序和服务的 CSRF 保护。
  • httpin - 将 HTTP 请求解码为自定义结构,包括查询字符串、表单、HTTP 标头等。
  • nosurf -Go的 CSRF 保护中间件。
  • qs - 用于将结构编码为 URL 查询参数的 Go 模块。
  • queryparam - 解码url.Values为标准或自定义类型的可用结构值。

回到顶部

功能性

支持 Go 函数式编程的包。

  • fpGo - Monad,Golang 的函数式编程特性。
  • fuego -Go 中的功能实验。
  • go-underscore - 有用的 Go 集合实用程序的有用集合。
  • gofp - 一个类似于 lodash 的强大的 Golang 实用程序库。
  • underscore -Go 1.18 及更高版本的函数式编程助手。

回到顶部

游戏开发

很棒的游戏开发库。

  • Azul3D - 用 Go 编写的 3D 游戏引擎。
  • Ebiten - Go 中死的简单 2D 游戏库。
  • engo - Engo 是一个用 Go 编写的开源 2D 游戏引擎。它遵循实体-组件-系统范式。
  • g3n - Go 3D 游戏引擎。
  • go-astar - A* 路径查找算法的 Go 实现。
  • go-sdl2 -简单 DirectMedia 层的 Go 绑定。
  • go3d -Go的面向性能的 2D/3D 数学包。
  • gott - 使用 golang 实现的游戏服务器骨架。
  • goworld - 可扩展的游戏服务器引擎,具有空间实体框架和热交换。
  • Leaf - 轻量级游戏服务器框架。
  • nano - 轻量级、便利、高性能的基于 golang 的游戏服务器框架。
  • Oak - 纯围棋游戏引擎。
  • Pitaya - 通过 C SDK 为 iOS、Android、Unity 等提供集群支持和客户端库的可扩展游戏服务器框架。
  • Pixel - Go 中手工制作的 2D 游戏库。
  • 原型- 使用最小 API 创建桌面游戏的跨平台(Windows/Linux/Mac)库。
  • raylib-go - raylib的Go 绑定,一个简单易用的库,用于学习视频游戏编程。
  • termloop - 基于终端的围棋游戏引擎,建立在 Termbox 之上。
  • tile - 面向数据和缓存友好的 2D 网格库 (TileMap),包括寻路、观察器和导入/导出。

回到顶部

发电机

生成 Go 代码的工具。

  • efaceconv - 用于从 interface{} 高性能转换为不可变类型的代码生成工具,无需分配。
  • gen - 类似“泛型”功能的代码生成工具。
  • generis - 提供泛型、自由格式宏、条件编译和 HTML 模板的代码生成工具。
  • go-enum - 从代码注释中生成枚举的代码。
  • go-linq - 用于 Go 的 .NET 类似 LINQ 的查询方法。
  • go-xray - 帮助更轻松地使用反射。
  • goderive - 从输入类型派生函数。
  • gotype - Golang 源代码解析,用法如反射包。
  • goverter - 通过定义接口生成转换器。
  • GoWrap - 使用简单的模板为 Go 接口生成装饰器。
  • interfaces - 用于生成接口定义的命令行工具。
  • jennifer - 无需模板即可生成任意 Go 代码。
  • pkgreflect - 用于包范围反射的预处理器。
  • typeregistry - 动态创建类型的库。

回到顶部

地理

地理工具和服务器

  • geoserver -geoserver 是一个 Go 包,用于通过 GeoServer REST API 操作 GeoServer 实例。
  • gismanager - 将您的 GIS 数据(矢量数据)发布到 PostGIS 和 Geoserver.
  • godal - GDAL 的包装器。
  • mbtileserver - 一个简单的基于 Go 的服务器,用于以 mbtiles 格式存储的地图图块。
  • osm - 用于读取、写入和使用 OpenStreetMap 数据和 API 的库。
  • pbf - OpenStreetMap PBF golang 编码器/解码器。
  • S2 geojson - 将 geojson 转换为 s2 单元并在地图上展示一些 S2 几何特征。
  • S2 几何- Go 中的 S2 几何库。
  • simplefeatures - simplesfeatures 是一个 2D 几何库,它提供了对几何进行建模的 Go 类型,以及对其进行操作的算法。
  • Tile38 - 具有空间索引和实时地理围栏的地理定位数据库。
  • WGS84 - 坐标转换和转换库(ETRS89、OSGB36、NAD83、RGF93、Web Mercator、UTM)。

回到顶部

编译器

将 Go 编译成其他语言的工具。

  • c4go - 将 C 代码转换为 Go 代码。
  • esp32 - 转译进入 Arduino 代码。
  • f4go - 将 FORTRAN 77 代码转换为 Go 代码。
  • gopherjs - 从 Go 到 JavaScript 的编译器。
  • tardisgo - Golang 到 Haxe 到 CPP/CSharp/Java/JavaScript 转译器。

回到顶部

协程

用于管理和使用 Goroutine 的工具。

  • ants - Go 中高性能和低成本的 goroutine 池。
  • artifex - Golang 的简单内存中作业队列,使用基于工作者的调度。
  • async - Go 的替代同步库(Future,Promise,Locks)。
  • async - 一种异步执行函数的安全方法,在出现恐慌时恢复它们。
  • 断路器- 使执行流程可中断的灵活机制。
  • channelify - 将您的函数转换为返回通道,以实现简单而强大的并行处理。
  • concurrency-limiter - 并发限制器,支持超时、动态优先级和 goroutine 的上下文取消。
  • conexec - 一个并发工具包,可帮助以高效和安全的方式同时执行函数。它支持指定整体超时以避免阻塞,并使用 goroutine 池来提高效率。
  • cyclicbarrier -golang的 CyclicBarrier.
  • execpool - 围绕 exec.Cmd 构建的池,可提前启动给定数量的进程,并在需要时将 stdin 和 stdout 附加到它们。与 FastCGI 或 Apache Prefork MPM 非常相似,但适用于任何命令。
  • go-floc - 轻松编排 goroutine。
  • go-flow - 控制 goroutine 的执行顺序。
  • go-tools/multithreading - 使用这个轻量级库和一个简单的 API 来管理一个 goroutine 池。
  • go-trylock - 对 Golang 读写锁的 TryLock 支持。
  • go-waitgroup -sync.WaitGroup与错误处理和并发控制类似。
  • go-workers - 轻松安全地运行大型数据处理管道的工作人员。
  • 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 的池。
  • 托儿所- Go 中的结构化并发。
  • 监督- 监督是 Erlang 监督树的完整实现。
  • parallel-fn - 并行运行函数。
  • 池塘- 用 Go 编写的简约和高性能 goroutine 工作池。
  • pool - 有限的消费者 goroutine 或无限的 goroutine 池,以便于 goroutine 处理和取消。
  • queue - 为您提供sync.WaitGroup类似队列组的可访问性。帮助您限制和限制 goroutine,等待所有 goroutine 结束等等。
  • 例程- 带上下文的例程控制,支持:Main、Go、Pool 和一些有用的 Executors。
  • semaphore - 基于通道和上下文的锁定/解锁操作超时的信号量模式实现。
  • semaphore - 基于 CAS 的快速可调整大小的信号量实现(比基于通道的信号量实现更快)。
  • stl - 基于软件事务内存 (STM) 并发控制机制的软件事务锁。
  • threadpool -Golang 线程池实现。
  • tunny -golang 的 Goroutine 池。
  • worker-pool -goworker 是一个 Go 简单的异步工作池。
  • workerpool - 限制任务执行并发的 Goroutine 池,而不是排队的任务数量。

相互作用

图形用户界面

用于构建 GUI 应用程序的库。

工具包

  • app - 使用 GO、HTML 和 CSS 创建应用程序的包。支持:MacOS、Windows 正在进行中。
  • fyne - 基于 Material Design 为 Go 设计的跨平台原生 GUI。支持:Linux、macOS、Windows、BSD、iOS 和 Android。
  • go-astilectron - 使用 GO 和 HTML/JS/CSS(由 Electron 提供支持)构建跨平台 GUI 应用程序.
  • go-gtk - GTK 的 Go 绑定。
  • go-sciter -Sciter的 Go 绑定:用于现代桌面 UI 开发的可嵌入 HTML/CSS/脚本引擎. 跨平台。
  • gotk3 - GTK3 的 Go 绑定。
  • gowd - 使用 GO、HTML、CSS 和 NW.js 进行快速简单的桌面 UI 开发。跨平台。
  • qt - Go 的 Qt 绑定(支持 Windows / macOS / Linux / Android / iOS / Sailfish OS / Raspberry Pi).
  • ui - Go 的平台原生 GUI 库。跨平台。
  • Wails - 使用内置 OS HTML 渲染器的带有 HTML UI 的 Mac、Windows、Linux 桌面应用程序。
  • walk - Go 的 Windows 应用程序库工具包。
  • webview - 具有简单的双向 JavaScript 绑定(Windows / macOS / Linux)的跨平台 webview 窗口。

相互作用

  • go-appindicator - libappindicator3 C 库的 Go 绑定。
  • gosx-notifier -Go 的OSX 桌面通知库。
  • mac-activity-tracker - OSX 库,用于通知您机器上的任何(可插入)活动。
  • mac-sleep-notifier -golang 中的 OSX 睡眠/唤醒通知.
  • robotsgo - Go Native 跨平台 GUI 系统自动化。控制鼠标、键盘等。
  • systray - 跨平台 Go 库,用于在通知区域放置图标和菜单。
  • Trayhost - 跨平台 Go 库,用于在主机操作系统的任务栏中放置图标。
  • zenity - 跨平台 Go 库和 CLI,用于创建与用户进行图形交互的简单对话框。

回到顶部

硬件

用于与硬件交互的库、工具和教程。

  • arduino-cli - 官方 Arduino CLI 和库。可以独立运行,也可以合并到更大的 Go 项目中。
  • emgo - 用于编程嵌入式系统(例如 STM32 MCU)的类似 Go 的语言。
  • ghw - Golang 硬件发现/检查库。
  • go-osc -Go 的开放声音控制(OSC)绑定。
  • go-rpio -Go 的GPIO,不需要 cgo。
  • goroslib -Go 的机器人操作系统(ROS)库。
  • 操纵杆- 一个轮询 API,用于读取附加操纵杆的状态。
  • sysinfo - 一个纯 Go 库,提供 Linux 操作系统/内核/硬件系统信息。

回到顶部

图片

用于处理图像的库。

  • bild - 纯 Go 中图像处理算法的集合。
  • bimg - 使用 libvips 进行快速高效图像处理的小包。
  • cameron - Go 的头像生成器。
  • canvas - 将矢量图形转换为 PDF、SVG 或光栅化图像。
  • darkroom - 具有可变存储后端和图像处理引擎的图像代理,专注于速度和弹性。
  • Draft - 使用简单的 YAML 语法为 GraphViz 生成高级微服务架构图。
  • geopattern - 从字符串创建漂亮的生成图像模式。
  • gg - 纯 Go 中的 2D 渲染。
  • 礼物- 图像处理过滤器包。
  • gltf - 高效且强大的 glTF 2.0 阅读器、编写器和验证器。
  • go-cairo - cairo 图形库的 Go 绑定。
  • go-gd - GD 库的 Go 绑定。
  • go-nude - 使用 Go 进行裸体检测。
  • go-opencv - OpenCV 的 Go 绑定。
  • go-webcolors - 从 Python 到 Go 的 webcolors 库的端口。
  • go-webp - 使用 libwebp 对 webp 图片进行编码和解码的库。
  • gocv - 使用 OpenCV 3.3 的计算机视觉 Go 包。
  • goimagehash - Go 感知图像散列包。
  • goimghdr - imghdr 模块确定 Go 文件中包含的图像类型。
  • govatar - 用于生成有趣头像的库和 CMD 工具。
  • govips - 用于 Go 的闪电般快速的图像处理和大小调整库。
  • gowitness - 在命令行上使用 go 和 headless chrome 截屏网页。
  • gridder - 基于网格的 2D 图形库。
  • image2ascii - 将图像转换为 ASCII。
  • imagick - 绑定到 ImageMagick 的 MagickWand C API.
  • imaginary - 用于图像大小调整的快速简单的 HTTP 微服务。
  • imaging - 简单的 Go 图像处理包。
  • img - 图像处理工具的选择。
  • ln - Go 中的 3D 线条艺术渲染。
  • mergi - 用于图像处理(合并、裁剪、调整大小、水印、动画)的 Tool & Go 库。
  • mort - 用 Go 编写的存储和图像处理服务器。
  • mpo - MPO 3D 照片的解码器和转换工具。
  • picfit - 用 Go 编写的图像大小调整服务器。
  • pt - 用 Go 编写的路径跟踪引擎。
  • resize - 使用常用插值方法调整 Go 的图像大小。
  • rez - 在纯 Go 和 SIMD 中调整图像大小。
  • scout -Scout 是一个独立的开源软件解决方案,用于 DIY 视频安全。
  • smartcrop - 为任意图像和裁剪尺寸找到好的裁剪。
  • steganography - LSB 隐写术的纯 Go 库.
  • stegify - 用于 LSB 隐写术的 Go 工具,能够隐藏图像中的任何文件。
  • svgo - 用于 SVG 生成的 Go 语言库。
  • tga - 包 tga 是一个 TARGA 图像格式解码器/编码器。
  • webp-server - 简单且最小的图像服务器,能够存储、调整大小、转换和缓存图像。

回到顶部

物联网(物联网)

用于物联网设备编程的库。

  • connectordb - 量化自我和物联网的开源平台。
  • devices - 物联网设备的库套件,x/exp/io 的实验性.
  • eywa - Project Eywa 本质上是一个连接管理器,用于跟踪连接的设备。
  • flogo -Flogo项目是 IoT Edge 应用程序和集成的开源框架。
  • gatt -Gatt 是用于构建低功耗蓝牙外围设备的 Go 包。
  • gobot - Gobot 是机器人、物理计算和物联网的框架。
  • huego - 适用于 Go 的广泛的飞利浦 Hue 客户端库。
  • iot - IoT 是一个用于实现 Google IoT Core 设备的简单框架。
  • mainflux - 工业物联网消息和设备管理服务器。
  • periph - 外设 I/O 与低级板设备接口。
  • sensorbee - 用于 IoT 的轻量级流处理引擎。

回到顶部

作业调度程序

用于调度作业的库。

  • cdule - 具有数据库支持的作业调度程序库
  • 脸颊- 一个类似 crontab 的简单调度程序,旨在为作业调度提供 KISS 方法。
  • clockwerk - 使用简单流畅的语法安排定期作业的 Go 包。
  • cronticker - 一个支持 cron 计划的代码实现。
  • go-cron - 用于 go 的简单 Cron 库,可以在特定日期和时间以不同的时间间隔执行闭包或函数,从每秒一次到每年一次。主要用于 Web 应用程序和长时间运行的守护进程。
  • go-quartz -Go 的简单、零依赖调度库。
  • gocron - 简单流畅的 Go 作业调度。这是jasonlvhit/gocron的一个积极维护的分支。
  • goflow - 用于 ETL/ML/AI 管道快速原型设计的工作流编排器和调度器。
  • gron - 使用简单的 Go API 定义基于时间的任务,Gron 的调度程序将相应地运行它们。
  • gronx - Cron 表达式解析器,任务运行程序和使用 crontab 的守护程序,如任务列表。
  • JobRunner - 智能且功能强大的 cron 作业调度程序,内置作业队列和实时监控。
  • jobs - 持久且灵活的后台作业库。
  • leprechaun - 支持 webhook、crons 和经典调度的作业调度程序。
  • sched - 具有快进时间能力的作业调度程序。
  • scheduler - Cronjobs 调度变得容易。
  • tasks - 一个易于使用的进程内调度程序,用于 Go 中的重复任务。

回到顶部

JSON

用于处理 JSON 的库。

  • ajson - 支持 JSONPath 的 golang 抽象 JSON。
  • ask - 轻松访问地图和切片中的嵌套值。与 encoding/json 和其他将任意数据“解组”为 Go 数据类型的包结合使用。
  • dynjson - 用于动态 API 的客户端可自定义 JSON 格式。
  • ej - 简洁地从不同来源写入和读取 JSON。
  • epoch - 包含用于编组/解组 Unix 时间戳/纪元到/从内置 time.Time 类型在 JSON 中的原语。
  • fastjson - Go 的快速 JSON 解析器和验证器。没有自定义结构,没有代码生成,没有反射。
  • gjo - 创建 JSON 对象的小工具。
  • GJSON - 使用一行代码获取 JSON 值。
  • go-jsonerror -Go-JsonError 允许我们轻松创建遵循 JsonApi 规范的 json 响应错误。
  • go-respond - 用于处理常见 HTTP JSON 响应的 Go 包。
  • gojq -Golang中的 JSON 查询。
  • gojson - 从示例 JSON 中自动生成 Go (golang) 结构定义。
  • 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 补丁)的 Go 的 JSON 差异库。
  • jsonf - 用于突出显示格式和获取 JSON 的结构查询的控制台工具。
  • jsongo - 流利的 API,可以更轻松地创建 Json 对象。
  • jsonhal - 简单的 Go 包,用于将自定义结构编组为 HAL 兼容的 JSON 响应。
  • json - 用于处理和查询 JSON 的实用程序,无需以类型安全的方式定义结构。
  • jzon - 具有标准兼容 API/行为的 JSON 库。
  • kazaam - 用于 JSON 文档任意转换的 API。
  • mapslice-json - 使用 MapSlice 以 JSON 格式对地图进行有序编组/解组。
  • mp - 简单的 cli 电子邮件解析器。它目前采用标准输入并输出 JSON。
  • OjG - 为 Go 优化的 JSON 是一种高性能解析器,具有各种附加的 JSON 工具,包括 JSONPath。
  • omg.jsonparser - 简单的 JSON 解析器,通过 golang 结构字段标签进行条件验证。
  • ujson - 适用于非结构化 JSON 的快速且最小的 JSON 解析器和转换器。
  • vjson - 用于通过流式 API 声明 JSON 模式来验证 JSON 对象的 Go 包。

回到顶部

日志记录

用于生成和使用日志文件的库。

  • distillog - 提炼的水平日志记录(将其视为 stdlib 日志级别)。
  • glg -glg 是用于 Go 的简单快速的分级日志库。
  • glo - 具有相同严重级别的受 PHP Monolog 启发的日志记录工具。
  • glog -Go的分级执行日志。
  • go-cronowriter - 根据当前日期和时间自动轮换日志文件的简单编写器,如 cronolog。
  • go-log - 带有 strack 跟踪、对象转储和可选时间戳的日志库。
  • go-log - 简单且可配置的 Go 日志记录,具有级别、格式化程序和编写器。
  • go-log - 日志库支持级别和多处理程序。
  • go-log -Go 中的 Log4j 实现。
  • go-logger - Go 程序的简单记录器,带有级别处理程序。
  • gologger - 简单易用的 go 日志库,登录彩色控制台、简单控制台、文件或 Elasticsearch.
  • gomol - 具有可扩展日志输出的 Go 多输出结构化日志记录。
  • got/log - 快速、可扩展、功能齐全、std-lib 源代码兼容的日志库。
  • httpretty - 在终端上漂亮地打印您的常规 HTTP 请求以进行调试(类似于 http.DumpRequest)。
  • journald - 执行 systemd Journal 的本地日志记录 API。
  • kemba - 受debug启发​​的小型调试日志记录工具,非常适合 CLI 工具和应用程序。
  • log - 一个 O(1) 日志系统,允许您将一个日志连接到多个写入器(例如 stdout、一个文件和一个 TCP 连接)。
  • log - Go 的结构化日志记录包。
  • log - 简单、可配置和可扩展的 Go 结构化日志记录。
  • log - Go 的结构化日志接口将日志记录外观与其实现完全分开。
  • log-voyage - 用 golang 编写的全功能日志记录 saas。
  • log15 - 简单、强大的 Go 日志记录。
  • logdump - 用于多级日志记录的包。
  • logex -Golang 日志库,支持跟踪和级别,由标准日志库包装。
  • logger - Go 的简约日志库。
  • logmatic - 具有动态日志级别配置的 Golang 彩色记录器。
  • logo - Golang 记录器到不同的可配置编写器。
  • logrus -Go的结构化记录器。
  • logrusiowriter -io.Writer使用logrus记录器实现。
  • logrusly - logrus插件将错误发​​送到Loggly。
  • logur - 一个自以为是的记录器接口和记录最佳实践的集合,带有适配器和知名库(logrus、go-kit log、zap、zerolog等)的集成。
  • logutils - 用于在 Go (Golang) 中更好地登录的实用程序,扩展了标准记录器。
  • logxi - 12 因素应用程序记录器,速度快,让您开心。
  • lumberjack - 简单的滚动记录器,实现 io.WriteCloser.
  • mlog - 用于 go 的简单日志记录模块,具有 5 个级别,可选的旋转日志文件功能和 stdout/stderr 输出。
  • noodlog - 参数化 JSON 日志库,可让您混淆敏感数据并编组任何类型的内容。没有更多的打印指针而不是值,也没有 JSON 字符串的转义字符。
  • onelog - Onelog 是一个非常简单但非常高效的 JSON 记录器。它是所有场景中最快的 JSON 记录器。此外,它是分配最低的记录器之一。
  • ozzo-log - 支持日志严重性、分类和过滤的高性能日志记录。可以将过滤后的日志消息发送到各种目标(例如控制台、网络、邮件)。
  • phuslu/log - 结构化日志记录变得容易。
  • rollingwriter - RollingWriter 是一种自动轮换io.Writer实现,具有多种策略来提供日志文件轮换。
  • seelog - 具有灵活调度、过滤和格式化的日志记录功能。
  • spew - 为 Go 数据结构实现一个深度漂亮的打印机以帮助调试。
  • sqldb-logger - Go SQL 数据库驱动程序的记录器,无需修改现有的 *sql.DB stdlib 使用。
  • stdlog -Stdlog 是一个面向对象的库,提供分级日志记录。它对 cron 作业非常有用。
  • structy/log - 一个简单易用的日志系统,简约但具有调试和区分消息的功能。
  • tail - 努力模仿 BSD tail 程序功能的 Go 包。
  • xlog - Go 的插件架构和灵活的日志系统,具有级别 ctrl、多个日志目标和自定义日志格式。
  • xlog - 结构化记录器,用于net/context具有灵活调度的感知 HTTP 处理程序。
  • 叫喊- 另一个简约的日志库。
  • zap - Go 中快速、结构化、分级的日志记录。
  • zerolog - 零分配 JSON 记录器。
  • zkits-logger - 一个强大的零依赖 JSON 记录器。

go语言是做什么的(盘点那些年让我们相爱恨晚的Go语言库)(22)

回到顶部

机器学习

机器学习库。

  • bayesian -Golang的朴素贝叶斯分类。
  • CloudForest - 快速、灵活、多线程的决策树集合,用于纯 Go 中的机器学习。
  • ddt - 动态决策树,创建定义可定制规则的树。
  • eaopt - 进化优化库。
  • evoli - 遗传算法和粒子群优化库。
  • fonet - 用 Go 编写的深度神经网络库。
  • go-cluster - k-modes 和 k-prototypes 聚类算法的 Go 实现。
  • go-deep -Go 中功能丰富的神经网络库。
  • go-fann - 快速人工神经网络(FANN)库的 Go 绑定。
  • go-featureprocessing -Go中用于低延迟机器学习的快速便捷的特征处理。
  • go-galib - 用 Go / golang 编写的遗传算法库。
  • go-pr -Go 语言中的模式识别包。
  • gobrain - 用 go 编写的神经网络。
  • godist - 各种概率分布和相关方法。
  • goga -Go的遗传算法库。
  • GoLearn - Go 的通用机器学习库。
  • golinear -Go 的 liblinear 绑定。
  • GoMind - Go 中一个简单的神经网络库。
  • goml -Go中的在线机器学习。
  • gott -Go的神经网络。
  • Goptuna - 用 Go 编写的黑盒函数的贝叶斯优化框架。一切都会被优化。
  • goRecommend - 用 Go 编写的推荐算法库。
  • gorgonia - 基于图形的计算库,如 Go 的 Theano,提供用于构建各种机器学习和神经网络算法的原语。
  • gorse - 基于 Go 编写的协同过滤的离线推荐系统后端。
  • goscore - 用于 PMML 的 Go 评分 API。
  • gosseract - 用于 OCR(光学字符识别)的 Go 包,使用 Tesseract C 库。
  • libsvm - 基于 LIBSVM 3.14 的 libsvm golang 版本派生工作。
  • m2cgen - 一个 CLI 工具,用于将经过训练的经典 ML 模型转换为具有零依赖关系的本机 Go 代码,用 Python 编写并支持 Go 语言。
  • 整洁- 用于增强拓扑神经进化(NEAT)的即插即用并行 Go 框架.
  • neural-go - 用 Go 实现的多层感知器网络,通过反向传播进行训练。
  • ocrserver - 一个简单的 OCR API 服务器,非常容易被 Docker 和 Heroku 部署。
  • onnx-go - 开放神经网络交换 (ONNX) 的 Go 接口。
  • probab - 概率分布函数。贝叶斯推理。用纯 Go 编写。
  • randomforest - 易于使用的 Go 随机森林库。
  • regommend - 推荐和协同过滤引擎。
  • shield - 具有灵活标记器和 Go 存储后端的贝叶斯文本分类器。
  • tfgo - 易于使用的 Tensorflow 绑定:简化了官方 Tensorflow Go 绑定的使用。在 Go 中定义计算图,加载和执行用 Python 训练的模型。
  • Varis - Golang 神经网络。

go语言是做什么的(盘点那些年让我们相爱恨晚的Go语言库)(23)

回到顶部

消息传递

实现消息系统的库。

  • ami - 将客户端转到基于 Redis Cluster Streams 的可靠队列。
  • amqp - 转到 RabbitMQ 客户端库。
  • APNs2 - 适用于 Go 的 HTTP/2 Apple 推送通知提供程序 - 向 iOS、tvOS、Safari 和 OSX 应用程序发送推送通知。
  • Asynq - 一个简单、可靠、高效的 Go 分布式任务队列,构建在 Redis 之上。
  • Beaver - 一个实时消息服务器,用于构建可扩展的应用内通知、多人游戏、网络和移动应用中的聊天应用。
  • Benthos - 一系列协议之间的消息流桥。
  • 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通知。
  • 发射器- 使用 Go 方式发出事件,具有通配符、谓词、取消可能性和许多其他好的胜利。
  • event - 模式观察者的实现。
  • EventBus - 具有异步兼容性的轻量级事件总线。
  • gaurun-client - 用 Go 编写的 Gaurun 客户端。
  • Glue - 强大的 Go 和 Javascript 套接字库(Socket.io 的替代品)。
  • go-mq - 具有声明性配置的 RabbitMQ 客户端。
  • go-notify -freedesktop 通知规范的本机实现。
  • go-nsq - NSQ 的官方 Go 包。
  • go-res - 使用 NATS 和 Resgate 构建客户端无缝同步的 REST/实时服务的包。
  • go-socket.io -golang的 socket.io 库,一个实时应用程序框架。
  • go-vitotrol - Viessmann Vitotrol Web 服务的客户端库。
  • Gollum - 一个 n:m 多路复用器,它从不同来源收集消息并将它们广播到一组目的地。
  • golongpoll - HTTP longpoll 服务器库,使 web pub-sub 变得简单。
  • gopush-cluster -gopush-cluster 是一个 go push 服务器集群。
  • gorush - 使用APNs2和 google GCM推送通知服务器。
  • gosd - 用于调度何时向频道发送消息的库。
  • guble - 使用推送通知(Google Firebase 云消息传递、Apple 推送通知服务、SMS)以及 websockets(一种 REST API)的消息传递服务器,具有分布式操作和消息持久性。
  • hare - 一个用户友好的库,用于发送消息和侦听 TCP 套接字。
  • hub - Go 应用程序的消息/事件中心,使用发布/订阅模式,支持 rabbitMQ 交换等别名。
  • jazz - 一个简单的 RabbitMQ 抽象层,用于队列管理以及消息的发布和消费。
  • machine - 基于分布式消息传递的异步任务队列/作业队列。
  • mangos - 具有传输互操作性的 Nanomsg(“可扩展性协议”)的纯 go 实现。
  • melody - 处理 websocket 会话的极简框架,包括广播和自动 ping/pong 处理。
  • Mercure - 使用 Mercure 协议(构建在服务器发送事件之上)调度服务器发送更新的服务器和库。
  • messagebus - messagebus 是一个 Go 简单的异步消息总线,非常适合在进行事件溯源、CQRS、DDD 时用作事件总线。
  • NATS Go Client - 轻量级和高性能的发布-订阅和分布式队列消息系统 - 这是 Go 库。
  • nsq-event-bus - 一个围绕 NSQ 主题和频道的小型包装器。
  • oplog - 用于 REST API 的通用 oplog/复制系统。
  • pubsub - 简单的 pubsub 包。
  • rabbus - amqp 交换和队列的小型包装器。
  • rabtap -RabbitMQ瑞士军刀 cli 应用程序。
  • RapidMQ - RapidMQ 是一个轻量级且可靠的库,用于管理本地消息队列。
  • redisqueue - redisqueue 提供了使用 Redis 流的队列的生产者和消费者。
  • rmqconn - RabbitMQ 重新连接。amqp.Connection 和 amqp.Dial 的包装器。允许在连接断开时重新连接,然后强制关闭对 Close() 方法的调用。
  • sarama - Apache Kafka 的 Go 库。
  • Uniqush-Push - Redis 支持的统一推送服务,用于向移动设备发送服务器端通知。
  • zmq4 - 转到 ZeroMQ 版本 4 的接口。也可用于版本 3和版本 2。

go语言是做什么的(盘点那些年让我们相爱恨晚的Go语言库)(24)

回到顶部

微软办公软件
  • unioffice - 用于创建和处理 Office Word (.docx)、Excel (.xlsx) 和 Powerpoint (.pptx) 文档的纯 go 库。
微软Excel

用于使用 Microsoft Excel 的库。

  • excelize - 用于读取和写入 Microsoft Excel™ (XLSX) 文件的 Golang 库。
  • go-excel - 一个简单轻巧的阅读器,可以将类似相关 db 的 excel 作为表格读取。
  • goxlsxwriter - 用于编写 XLSX(Microsoft Excel)文件的 libxlsxwriter 的 Golang 绑定。
  • xlsx - 用于简化读取最新版本 Microsoft Excel 在 Go 程序中使用的 XML 格式的库。
  • xlsx - 在 Go 程序中读取/更新现有 Microsoft Excel 文件的快速且安全的方法。

回到顶部

各种各样的依赖注入

用于依赖注入的库。

  • alice - Golang 的附加依赖注入容器。
  • container - 一个强大的 IoC 容器,具有流畅且易于使用的界面。
  • di - Go 编程语言的依赖注入容器。
  • dig - 一个基于反射的 Go 依赖注入工具包。
  • dingo - 基于 Guice 的 Go 依赖注入工具包。
  • fx - 一个基于依赖注入的 Go 应用程序框架(建立在 dig 之上)。
  • gocontainer - 简单的依赖注入容器。
  • goioc/di - 受 Spring 启发的依赖注入容器。
  • google/wire -Go 中的自动初始化。
  • HnH/di - 专注于清洁 API 和灵活性的 DI 容器库。
  • kinit - 具有全局模式、级联初始化和恐慌安全终结的可定制依赖注入容器。
  • 链接器- 基于反射的依赖注入和具有组件生命周期支持的控制库反转。
  • nject - 用于库、测试和 http 端点以及服务启动的类型安全、反射框架。
  • wire -Golang 的严格运行时依赖注入。

回到顶部

项目布局

用于构建项目的非官方模式集。

  • ardanlabs/service -用于构建生产级可扩展 Web 服务应用程序的入门工具包。
  • cookiecutter-golang - 一个 Go 应用程序样板模板,用于按照生产最佳实践快速启动项目。
  • go-sample - 带有真实代码的 Go 应用程序项目的示例布局。
  • go-starter - 一个自以为是的生产就绪 RESTful JSON 后端模板,与 VSCode DevContainers 高度集成。
  • go-todo-backend - 使用产品微服务的模块化项目布局的 Go Todo 后端示例.
  • gobase - 一个简单的 golang 应用程序框架,具有真正的 golang 应用程序的基本设置。
  • golang-standards/project-layout -Go 生态系统中一组常见的历史和新兴项目布局模式。注意:尽管 org-name 不代表官方 golang 标准,请参阅此问题以获取更多信息。尽管如此,有些人可能会发现布局很有用。
  • golang-templates/seed - Go 应用程序 GitHub 存储库模板。
  • insidieux/inizio - 带有插件的 Golang 项目布局生成器。
  • modern-go-application -Go 应用程序样板和应用现代实践的示例。
  • pagoda -Go 中内置的快速、简单的全栈 Web 开发入门套件。
  • 脚手架- 脚手架生成一个入门 Go 项目布局。让您专注于实现的业务逻辑。
  • wangyoucao577/go-project-layout - 关于如何构建 Go 项目布局的一组实践和讨论。

回到顶部

字符串

用于处理字符串的库。

  • bexp - 大括号扩展机制的 Go 实现以生成任意字符串。
  • go-formatter - 实现由大括号格式字符串包围的替换字段。{}
  • gobeam/Stringy - 字符串操作库,用于将字符串转换为驼峰式、蛇式、烤肉串式 / slugify 等。
  • strutil - 字符串实用程序。
  • sttr - 跨平台的 cli 应用程序,用于对字符串执行各种操作。
  • xstrings - 从其他语言移植的有用字符串函数的集合。
,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页