Awesome Go
音频和音乐
用于操作音频的库
- flac – 原生 Go FLAC 编码器/解码器,支持 FLAC 流
- gaad – 原生 Go AAC 比特流解析器
- go-sox – 在 Go 中使用 libsox
- GoAudio – 原生 Go 音频处理库
- gosamplerate – 在 Go 中使用 libsamplerate
- id3v2 – Go ID3 编解码库
- malgo – 在 Go 中使用 MiniAudio 库
- minimp3 – 轻量级 MP3 解码器库
- mix – 用于音乐应用的、基于时序的 Go 原生音频混音器
- mp3 – 原生 Go MP3 解码器
- music-theory – Go 语言音乐理论模型
- Oto – 一个在多平台上播放声音的低级库
- PortAudio – 在 Go 中使用 PortAudio 音频 I/O 库
- portmidi – 在 Go 中使用 PortMidi
- vorbis – 原生 Go Vorbis 解码器(使用 CGO,但是没有依赖)
- waveform – 能够从音频流中生成波形图的 Go 扩展包
认证和 OAuth
实现认证方案的库
- authboss – Web 模块化认证系统(这是一个适用于 Go Web 项目的用户认证解决方案,每次启动一个新的 Go Web 项目时,你只需要安装这个库并进行配置,就可以为该项目提供认证功能了,而不需要每次自己手动去实现)
- branca – 在 Golang 中实现的 Branca Tokens
- casbin – 支持访问控制模型(例如 ACL、RBAC、ABAC)的认证库
- cookiestxt – cookies.txt 文件格式解析器
- go-email-normalizer – 用于提供 Email 地址规范表示的 Golang 库
- go-guardian – Go-Guardian 库提供了简单、干净、惯用的方法来构建强大的现代 API 和 Web 认证,支持 LDAP、Basic、Bearer Token 和基于证书的认证
- go-jose – 完整地实现了 JOSE 工作组的JSON Web Token、JSON Web Signatures 和 JSON Web Encryption 规范
- go-oauth2-server – 独立的、符合规范的、用 Golang 实现的 OAuth2 服务器
- gologin – 通过 OAuth1 和 OAuth2 认证提供者进行登录认证的链式处理器
- gorbac – 基于 Golang 的轻量级 RBAC 实现
- goth – 提供了简单、干净、惯用的方式使用 OAuth 和 OAuth2,开箱支持处理多个提供者
- httpauth – HTTP Basic Authentication 中间件
- jeff – 通过可插拔的后端实现简单、灵活、安全、惯用的 Web 会话(Session)管理
- jwt – 干净且易于上手的 JWT(JSON Web Tokens)实现
- jwt – 轻量级 JSON Web Token (JWT) 库
- jwt – 安全、简单、快速的 JSON Web Tokens 实现
- jwt-auth – 适用于 Golang HTTP 服务器的 JWT 中间件,支持多个配置项
- jwt-go – Golang 版 JSON Web Tokens (JWT) 实现
- loginsrv – 使用可插拔的后端通过 JWT 登录微服务(支持 OAuth2 (Github)、htpasswd、osiam)
- oauth2 – goauth2 的继承者,通用 OAuth 2.0 包,自带 JWT、Google APIs、计算引擎和 App Engine 支持
- osin – Golang OAuth2 服务器库
- otpgo – Golang 版 Time-Based One-Time Password (TOTP) 和 HMAC-Based One-Time Password (HOTP) 库
- paseto – Golang 版 Platform-Agnostic Security Tokens (PASETO)
- permissions2 – 追踪用户、登录状态和权限的库,使用安全的 cookies 和 bcrypt
- rbac – 适用于 Go 应用的最小化 RBAC 包
- scope – 在 Go 中轻松管理 OAuth2 作用域
- scs – HTTP 服务器 Session 管理器
- securecookie – 高效安全的 cookie 编码/解码
- session – Go Web 服务器 Session 管理
- sessiongate-go – 基于 SessionGate Redis 模块的 Go Session 管理
- sessions – 为 Go HTTP 服务器提供简单、高性能、高度可定制的会话服务
- sessionup – 简单高效的 HTTP Session 管理和识别包
- sjwt – 简单的 jwt 生成器和解析器
构建机器人
用于构建和使用机器人的库
- 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 编写,兼容中心化交易所和自定义交易策略
- margelet – 构建 Telegram 机器人的框架
- micha – Telegram 机器人 API
- olivia – 用人工神经网络构建的聊天机器人
- slacker – 用于创建 Slack 机器人的易于使用的框架
- slackscot – 另一个用于构建 Slack 机器人的框架
- tbot – 和 net/http 类似的 Telegram 机器人服务器 API
- telebot – 基于 Go 实现的 Telegram 机器人框架
- telegram-bot-api – 简单干净的 Telegram 机器人客户端
- Tenyks – 面向服务的 IRC 机器人,使用 Redis 和 JSON 作为消息系统
构建自动化
构建自动化流程的库和工具
- 1build – 用于管理项目特定命令的命令行工具
- gaper – 在 Go 项目崩溃或者某些文件修改后构建并重启该项目
- gilbert – Go 项目系统和任务运行器
- mmake – 现代的 Make 工具
- realize – 具备文件监视和实时重载功能的 Go 构建系统,你可以基于自定义路径运行、构建并监视文件修改
- Task – 简单的 “Make” 替代方案
- taskctl – 并行任务运行器
- taskflow – 使用 Go 创建构建管道
命令行
标准 CLI
用于构建标准或者基本命令行应用的库
- argparse – 受到 Python argparse 模块启发的命令行参数解析器
- argv – 使用 bash 语法将命令行字符串分割为参数数组的库
- cli – 基于 Golang 结构体标签实现的功能丰富且易于使用的的命令行包
- cli – 用于构建命令行界面的简单但完整的 API
- climax – 另一种带有 “人情味 “的CLI,秉承 Go Command 的精神
- clîr – 一个简单清晰的 CLI 库,无任何依赖
- cmd – 扩展标准的
flag
包以支持子命令以及更多 - cmdr – POSIX/GNU 风格的、类似 getopt 的命令行界面
- cobra – 用于现代 Go CLI 交互的Commander
- commandeer – 开发友好的 CLI 应用:基于结构体字段和标签设置标志、默认值和用法
- complete – 通过 Go + Go 命令编写 bash 完成功能
- Dnote – 一个简单的命令行笔记本,支持多设备同步
- env – 基于标签的结构体环境配置
- flag – 简单但功能强大的 Go 命令行选项解析库,支持子命令
- flaggy – 一个强大的、习惯性的标志包,具有出色的子命令支持
- flagvar – Go 标准
flag
包的标志参数类型集合 - go-arg – 基于结构体的参数解析
- go-commander – 简化 CLI 工作流的 Go 库
- go-flags – Go 命令行选项解析器
- go-getoptions – 受 Perl GetOpt::Long 的灵活性启发的 Go 选项解析器
- gocmd – 用于构建命令行应用的 Go 库
- hiboot cli – cli 应用框架,支持自动配置和依赖注入
- job – JOB,把你的短期命令作为长期工作
- kingpin – 支持子命令的命令行和标志解析器
- liner – 用于命令行界面的类似于读行的库
- mitchellh/cli – 用于实现命令行界面的 Go 库
- mow.cli – 用于构建 CLI 应用的 Go 库,具有复杂的标志、参数解析和验证功能
- ops – Unikernel 构建器/编排器
- pflag – 插拔式替换 Go
flag
包,实现了 POSIX/GNU 风格的--flags
- sand – 用于创建解释器等功能的简单 API
- sflags – 基于结构体的 flag 生成器,可用于 flag、urfave/cli、pflag、cobra、kingpin 和其他库
- strumt – 用于创建提示链的库
- ts – 时间戳转换 & 比较工具
- ukautz/clif – 小型命令行界面框架
- urfave/cli – 简单、快速、有趣的包,用于在Go(以前是 codegangsta/cli)中构建命令行应用
- wlog – 简单的日志接口,支持跨平台的颜色和并发
- wmenu – 易于使用的菜单结构,用于在 CLI 应用中提示用户做出选择
高级命令 UI
用于构建控制台应用和控制台用户界面的库
- asciigraph – 用于在命令行应用中创建轻量级 ASCII 行图 ╭┈╯ 的 Go 库,没有其他依赖
- aurora – ANSI 控制台颜色,支持 fmt.Printf/Sprintf
- cfmt – 受 Bootstrap 颜色类启发的上下文 fmt
- cfmt – 简单方便的格式化风格输出,完全兼容 fmt 库。
- chalk – 直观的终端/控制台输出美化预处理包
- colourize – 在终端中使用 ANSI 彩色文本的 Go 库
- ctc – 非侵入性跨平台终端彩库,不需要修改打印方法
- 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 终端应用中输出简单表格
- tabby – 一个超级简单的 Golang 表格库
- table – 基于终端色彩的表格库
- tabular – 通过命令行实用工具打印 ASCII 表,而不需要将大量数据传递给 API
- termbox-go – Termbox 是一个用于创建跨平台文本界面的库
- termdash – 基于termbox-go的 Go 终端仪表盘,灵感来源于termui。
- termui – 基于termbox-go的 Go 终端仪表盘,灵感来源于blessed-contrib
- uilive – 用于实时更新终端输出的库
- uiprogress – 在终端应用中渲染进度条的灵活库
- uitable – 提高终端应用中表格数据可读性的库
- yacspin – 又一个 CLi Spinner 包,用于处理终端旋转
配置
用于配置解析的库
- aconfig – 简单、实用、有见解的配置加载器
- cleanenv – 简约的配置读取器(来自文件、ENV 以及任何你想要的地方)
- config – 轻量级但功能强大的 Go 项目配置包
- config – 云端原生应用配置,只需两行就可以将 ENV 绑定到结构体中
- config – 带有环境变量和标志解析的 JSON 或 YAML 配置封装器
- configuration – 用于从环境变量、文件、标志和”默认”标签初始化配置结构体的库
- configure – 通过多个源提供配置,包括 JSON、标志和环境变量
- configuro – 来自 ENV 和文件的意见性配置加载和验证框架,专注于兼容 12-Factor 的应用
- confita – 将多个后台的配置以级联方式加载到一个结构体中
- conflate – 用于从任意 URL 中合并多个 JSON/YAML/TOML 文件,对 JSON 模式进行验证,并应用模式中定义的默认值的库
- env – 将环境变量解析到 Go 结构体(带默认值)
- envcfg – 将环境变量解析到 Go 结构体
- envconf – 通过环境变量进行配置
- envconfig – 从环境变量读取配置
- envh – 管理环境变量的辅助函数
- fig – 用于从文件和环境变量中读取配置的小型库(带有验证和默认值)
- gcfg – 将 INI 风格的配置文件读取到 Go 结构体中,支持用户自定义类型和子项
- genv – 在 dotenv 的支持下,轻松读取环境变量
- go-aws-ssm – 从 AWS System Manager – Parameter Store 获取参数的 Go 包
- go-ini – 一个用于解析和反解析 INI 文件的 Go 包
- go-ssm-config – 用于从 AWS SSM(Parameter Store)加载配置参数的 Go 工具
- go-up – 一个简单的配置库,具有递归占位符解析功能
- goConfig – 将一个结构体作为输入解析,并将命令行、环境变量和配置文件中的参数填充到该结构体的字段中
- godotenv – 移植 Ruby 的 dotenv 库到 Go(从
.env
中加载环境变量) - gofigure – 让 Go 应用配置变得简单
- gone/jconf – 模块化 JSON 配置,将你的配置结构和它们配置的代码一起保存,并将解析工作委托给子模块,而不牺牲完整的配置序列化
- gookit/config – 应用配置管理(加载、读取、设置),支持 JSON、YAML、TOML、INI、HCL 等多种文件的加载和数据覆盖合并
- harvester – Harvester 是一个易于使用的静态和动态配置包,支持数据填充、环境变量和 Consul 集成
- hjson – Human JSON,一种适合人类的配置文件格式,放宽语法、减少错误、增加注释
- hocon – 支持环境变量、引用其他值、注释和多文件等功能的 HOCON(对人友好的 JSON 超集)格式的配置库
- ingo – 在一个类似于 ini 的配置文件中保留标志
- ini – 读写 INI 文件的 Go 包
- joshbetz/config – 适用于 Go 的小型配置库,可以解析环境变量、JSON 文件,并在 SIGHUP 时自动重载
- kelseyhightower/envconfig – 用于管理环境变量配置数据的 Go 库
- koanf – 轻量级、可扩展的库,用于读取 Go 应用程序中的配置,内置支持 JSON、TOML、YAML、env、命令行
- konfig – 为分布式处理时代的 Go 提供可组合、可观察和可执行的配置处理
- mini – 用于解析 ini 风格配置文件的 Golang 包
- nasermirzaei89/env – 简单实用的读取环境变量的包
- onion – 基于层的 Go 配置库,支持 JSON、TOML、YAML、properties、etcd、env 并且使用 PGP 加密
- store – 针对 Go 的轻量级配置管理器
- swap – 基于构建环境,递归地实例化/配置结构体(支持 YAML、TOML、JSON 和 env)
- typenv – 简约、零依赖、类型化的环境变量库
- viper – 功能强大的 Go 配置库
- xdg – 遵循 XDG 标准 的跨平台包
持续集成
持续集成辅助工具
- CDS – 企业级 CI/CD 和 DevOps 自动化开源平台
- drone – Drone 是一个通过 Go 编写的、建立在 Docker 之上的持续集成平台
- duci – 一个简单的 CI 服务器,不需要特定的领域语言
- gomason – 从一个干净的工作空间测试、构建、签署和发布你的 Go 二进制文件
- goveralls – 在 Go 中集成 Coveralls.io 持续代码覆盖跟踪系统
- overalls – 类似于 goveralls 的多包 Go 项目
- roveralls – 递归式覆盖测试工具
CSS 预处理
预处理 CSS 文件的库
- gcss – 纯粹的 Go CSS 预处理器
- go-libsass – 100% 兼容 Sass libsass 项目的 Go 封装器
数据结构
通用数据结构和算法的 Go 实现
- algorithms – Go 实现的算法和数据结构大全
- binpacker – 帮助用户建立自定义二进制流的二进制打包器和解包器
- bit – Golang Set 数据结构,具有额外的位转功能
- bitset – 实现了 bitsets 的 Go 扩展包
- bloom – 布隆过滤器的 Go 语言实现
- bloom – Golang 布隆过滤器实现
- boomfilters – 用于处理连续的、无边界流的概率论数据结构
- cmap – Go 线程安全并发字典,支持使用
interface{}
作为键,并自动扩展分片 - concurrent-writer – 高并发下
bufio.Writer
的替代方案 - conjungo – 小巧、强大、灵活的合并库
- count-min-log – Count-Min-Log Go 实现草图,用近似计数器进行近似计数(类似于 Count-Min 草图,但使用更少的内存)
- crunch – 实现缓冲区的 Go 包,便于处理各种数据类型
- cuckoofilter – Cuckoo 过滤器:是 Go 中实现的布隆过滤器的一个很好的替代方案
- deque – 高度优化的双端队列
- deque – 快速环形缓冲区 deque(双端队列)
- dict – 类似于 Python 的 Go 字典(dict)
- encoding – 为 Go 设计的整数压缩库
- go-adaptive-radix-tree – 自适应 Radix 树的 Go 实现
- go-datastructures – 实用的、高性能的、线程安全的数据结构集合
- go-edlib – 兼容 Unicode 的 Go 字符串比较和编辑距离算法库(Levenshtein、LCS、Hamming、Damerau levenshtein、Jaro-Winkler 等)
- go-ef – Elias-Fano 编码的 Go 实现
- go-geoindex – 内存地理位置(geo)索引
- go-mcache – 内存键值对存储/缓存库
- go-rquad – 具有高效的点定位和邻接查找功能的区域四叉树
- gocache – 一个完整的 Go 缓存库,支持多个存储驱动(内存、memcache、redis…)、可链接、可加载、度量缓存等
- goconcurrentqueue – 并发 FIFO 队列实现
- gods – Go 数据结构大全,包含容器、集合、列表、栈、字典、位图、树、HashSet 等
- gofal – Go 小数 API
- golang-set – 线程安全和非线程安全的高性能集合 Go 实现
- goset – Go 集合实现大全
- goskiplist – Go 跳表实现
- gostl – Go 数据结构和算法实现库,用于提供类似 C++ STL 的功能
- gota – Go 数据框架、系列和数据整理方法的实现
- goterator – 用于提供 Map-Reduce 功能的迭代器实现
- hide – ID类型,带有 marshalling to/from hash 功能,以防止向客户端发送 ID
- hilbert – 用于将数值映射到空间填充曲线或从空间填充曲线中映射出来的 Go 软件包,例如 Hilbert 和 Peano 曲线
- hyperloglog – HyperLogLog 实现,带有稀疏、对数-贝塔偏置校正和 TailCut 空间缩小功能
- iter – Go 版本 C++ STL 迭代器和算法实现
- levenshtein – Levenshtein 距离和相似度量,具有可定制的编辑成本和类似 Winkler 的共同前缀
- levenshtein – 在 Go 中实现计算 levenshtein 距离
- merkletree – 实现 Merkle 树,为数据结构的内容提供高效、安全的验证
- mspm – 用于信息检索的多字符串模式匹配算法
- nan – 零分配可以为空的结构体,带有方便的转换函数、marshallers 和 unmarshallers
- null – 可从 JSON 中 marshalled/unmarshalled 的 Nullable 类型
- parsefields – 解析类 JSON 日志的工具,用于收集独特的字段和事件。
- pipeline – 扇入扇出管道实现
- ptrie – 前缀树实现
- remember-go – 一个用于缓存慢速数据库查询的通用接口(支持 redis、memcached、ristretto 或内存缓存)
- ring – Go 实现的高性能、线程安全的布隆过滤器
- roaring – 压缩 bitset 的 Go 实现包
- set – 使用 LinkedHashMap 实现简单的的集合数据结构
- skiplist – 非常快的 Go 跳表实现
- skiplist – Go 跳表实现
- slices – 操作切片的函数库,类似
package strings
但支持处理切片 - timedmap – 带有过期时间的键值对字典
- treap – 使用树堆实现的持久化、快速的有序字典
- trie – Go 版本 Trie 树实现
- ttlcache – 内存级 string-interface{} 缓存,有各种基于时间的到期选项和回调
- typ – 空类型,安全的基元类型转换和从复杂结构中取值
- willf/bloom – Go 版本布隆过滤器实现
数据库
基于 Go 实现的数据库
- badger – 使用 Go 实现的快速键值存储库
- bbolt – Go 嵌入式键值数据库
- bcache – 最终一致分布式内存缓存 Go 库
- BigCache – 为千兆字节级数据设计的高速键/值缓存
- Bitcask – Bitcask 是一个用纯 Go 编写的嵌入式的、持久的、快速的键值数据库,由于采用了 Bitcask 盘上布局(LSM+WAL),因此具有可预测的读写性能、低延迟和高吞吐量
- buntdb – 快速、嵌入式的内存键值数据库,支持自定义索引和空间
- cache – 内存键值缓存,有到期时间,零依赖,<100 LoC,100% 覆盖
- cache2go – 内存键值缓存,支持基于超时的自动失效
- clusteredBigCache – BigCache,支持集群和单个项目过期
- cockroach – 可扩展、支持异地复制、事务型数据存储
- Coffer – 支持事务的简单 ACID 键值数据库
- couchcache – 基于 Couchbase 服务器驱动的 RESTful 缓存微服务
- CovenantSQL – CovenantSQL 是一个区块链上的 SQL 数据库
- Databunker – 个人身份信息(PII)存储服务,符合 GDPR 和 CCPA 的要求
- dgraph – 可扩展、分布式、低延迟、高吞吐量的 Graph 数据库。
- diskv – 自制的支持磁盘备份的键值存储
- eliasdb – 无依赖的、支持事务的 Graph 数据库,具有 REST API、短语搜索和类似 SQL 的查询语言
- fastcache – 为大量数据提供快速的线程安全内存缓存,最小化 GC 开销
- GCache – 支持过期 Cache、LFU、LRU 和 ARC 的缓存库
- go-cache – Go 实现的内存级键值存储库/缓存库(类似 Memcached),适合单机应用
- goleveldb – LevelDB 键值数据库的 Go 实现版本
- groupcache – Groupcache 是一个缓存和缓存填充库,在很多情况下可以作为 Memcached 的替代品
- immudb – immudb 是一个轻量级的、高速的不可变数据库,适用于用 Go 编写的系统和应用程序
- influxdb – 用于监控、事件和实时分析的可扩展数据存储库
- Kivik – Kivik 为 CouchDB、PouchDB 和类似的数据库提供了一个通用的 Go 和 GopherJS 客户端库
- ledisdb – Ledisdb 是基于 LevelDB 的类似 Redis 的高性能 NoSQL
- levigo – Levigo 是 LevelDB 的 Go 封装器
- moss – Moss 是一个简单的 LSM 键值存储引擎,100% 用 Go 编写
- nutsdb – Nutsdb 是一个用纯 Go 语言编写的简单、快速、可嵌入、持久化的键/值存储空间,它支持完全可序列化的事务和许多数据结构,如列表、集合、排序集合,它支持完全可序列化的事务和许多数据结构,如列表、集合、排序集合
- piladb – 基于堆栈数据结构的轻量级 RESTful 数据库引擎
- pogreb – 嵌入式键值存储库,适用于重度读操作的场景
- prometheus – 监控系统和时序数据库
- pudge – 使用 Go 标准库编写的快速而简单的键值存储库
- rqlite – 基于 SQLite 构建的轻量级、分布式、关系型数据库
- Scribble – 微型平面文件 JSON 存储库实现
- slowpoke – 支持持久化的键值存储库
- tempdb – 适用于临时条目的键值存储库
- tidb – TiDB 是一个分布式 SQL 数据库,灵感来自于谷歌 F1 的设计
- tiedot – Golang 驱动的 NoSQL 数据库
- ttlcache – 内存键值存储库,每个记录都有 TTL
- unitdb – 用于物联网、实时消息应用的快速时序数据库,使用 github.com/unit-io/unitd 应用通过 tcp 或 websocket 访问 unitdb
- Vasto – 一个分布式的高性能键值存储库,存放在磁盘上,最终一致,高可用,能够在不中断服务的情况下扩容或缩容
- VictoriaMetrics – 快速、资源有效和可扩展的开源时序数据库,可用于 Prometheus 的长期远程存储,支持PromQL
数据库表结构迁移
- avro – 发现 SQL 表结构并将其转换为 AVRO 结构,查询 SQL 记录到 AVRO 字节
- darwin – 为 Go 提供的数据库表结构生成库
- go-fixtures – 为 Golang 优秀的内置数据库/sql库提供 Django 风格的 fixtures
- go-pg-migrations – 一个用 go-pg/pg 帮助编写迁移的 Go 包
- goose – 数据库迁移工具,你可以通过创建增量 SQL 或 Go 脚本来管理你的数据库表结构演变
- gormigrate – Gorm ORM 的数据库表结构迁移助手
- migrate – 数据库迁移库,支持 CLI 及包导入
- migrator – 非常简单的 Go 数据库迁移库
- pravasan – 简单的迁移工具 — 目前适用于 MySQL,但计划很快支持 Postgres、SQLite、MongoDB 等
- schema – 在你的 Go 二进制文件中嵌入数据库/SQL 兼容数据库的表结构迁移库
- skeema – MySQL 的纯 SQL 模式管理系统,支持分片和外部在线表结构变更工具
- soda – MySQL、PostgreSQL 和 SQLite 的数据库迁移、创建、ORM 等
- sql-migrate – 数据库迁移工具,允许使用 go-bindata 将迁移嵌入到应用程序中
数据库工具
- chproxy – ClickHouse 数据库 HTTP 代理
- clickhouse-bulk – 收集小的插入然后发送大的请求到 ClickHouse 服务器
- datagen – 一个快速的数据生成器,它能识别多表并支持多行 DML
- dbbench – 支持多个数据库和脚本的数据库基准测试工具
- go-mysql – Go 工具集,用来处理MySQL 协议和复制
- go-mysql-elasticsearch – 将你的 MySQL 数据自动同步到 Elasticsearch 中
- kingshard – kingshard 是一个由 Golang 驱动的 MySQL 高性能代理
- myreplication – MySql binlog 日志复制监听器,支持基于语句和行的复制
- octillery – 数据库分片库(支持所有 ORM 和原生 SQL)
- orchestrator – MySQL 复制拓扑管理器和可视化工具
- pg_timetable – PostgreSQL 的高级调度
- pgweb – 基于 Web 的 PostgreSQL 数据库浏览器
- prep – 使用预处理 SQL 语句,而不需要改变你的代码
- pREST – ⚡简化和加速开发,在任何 Postgres 应用程序上,无论是现有的还是新的,都是即时、实时、高性能的
- rwdb – rwdb 为多个数据库服务器的设置提供读取复制功能
- vitess – vitess 提供服务器和工具,方便 MySQL 数据库的大规模网络服务扩展
用于构建和使用 SQL 的查询构建器、库
- buildsqlx – Go 数据库查询构建库,适用于 PostgreSQL
- dbq – 为 Go 提供零模板数据库操作
- Dotsql – 可以帮助你将 SQL 文件保存在一个地方,并轻松地使用它们的 Go 库
- gendry – 非侵入式的 SQL 构建器和强大的数据绑定器
- godbal – 适用于 Go 的数据库抽象层(DBAL),支持 SQL 构建器以便轻松获得结果
- goqu – 惯用的 SQL 构建程序和查询库
- gosql – SQL 查询生成器,具有更好的空值支持
- hasql – 用于访问多主机 SQL 数据库安装的库
- igor – PostgreSQL 的抽象层,支持高级功能,并使用类似 gorm 的语法
- jet – 在 Go 中编写类型安全的 SQL 查询框架,能够轻松地将数据库查询结果转换为所需的任意对象结构
- mpath – MPTT(Modified Preorder Tree Traversal)包,用于 SQL 记录 — 实体化路径实现
- ormlite – 轻量级的软件包,适用于 SQLite 数据库,包含一些类似 ORM 的助手功能
- ozzo-dbx – 强大的数据检索方法以及与 DB 无关的查询构建能力
- qry – 用原始 SQL 查询从文件中生成常量的工具
- sq – 为 Go 提供类型安全的 SQL 构建器和结构映射器
- sqlf – 快速的 SQL 查询构建器
- sqlingo – 一个轻量级的 DSL,用于在 Go 中构建 SQL
- sqrl – SQL 查询生成器,Squirrel 的分支,优化了性能
- Squalus – 在 Go SQL 包上的层,使其更容易执行查询
- Squirrel – 帮助你构建 SQL 查询的 Go 库
- xo – 基于现有的模式定义或自定义查询为数据库生成惯用的 Go 代码,支持 PostgreSQL、MySQL、SQLite、Oracle 和 SQL Server
数据库驱动
连接和操作数据库的库
关系型数据库
- avatica – database/sql 的 Apache Avatica/Phoenix SQL 驱动
- bgc – 为 BigQuery for go 提供的数据存储连接
- firebirdsql – 适用于 Go 的Firebird RDBMS SQL 驱动
- go-adodb – database/sql 的 Microsoft ActiveX Object DataBase 驱动
- go-mssqldb – Go Microsoft MSSQL 驱动
- go-oci8 – database/sql 的 Oracle 驱动
- go-sql-driver/mysql – database/sql 的 MySQL 驱动
- go-sqlite3 – database/sql 的 SQLite3 驱动
- gofreetds – 封装了 FreeTDS 的 SQL Server 驱动
- pgx – database/sql 的 PostgreSQL 驱动
- pq – database/sql 的原生 Postgres 驱动
- Sqinn-Go – 纯 Go 实现的 SQLite 驱动
NoSQL 数据库
- aerospike-client-go – Aerospike Go 客户端
- arangolite – Golang 轻量级 ArangoDB 驱动
- asc – 为 Aerospike 提供的数据存储连接库
- forestdb – 为 ForestDB 提供的 Go 绑定
- go-couchbase – Couchbase Go 客户端
- go-pilosa – Pilosa Go 客户端库
- go-rejson – 使用 Redigo Golang客户端为 redislabs 的 ReJSON 模块提供 Golang 客户端,在 Redis 中以 JSON 对象的形式存储和操作结构体
- gocb – 官方 Couchbase Go SDK
- gocosmos – REST 客户端和
database/sql
的标准 Azure Cosmos DB 驱动 - gocql – Apache Cassandra Go 语言驱动
- godis – Redis 客户端 Golang 实现, 灵感来自 jedis
- godscache – Google Cloud Platform Go Datastore 包的封装器,使用 Memcached 设置缓存
- gomemcache – Memcache Go 客户端库
- gorethink – RethinkDB Go 驱动
- goriak – Riak KV Go 驱动
- mgm – 基于 MongoDB 模型的 Go ODM(基于官方的 MongoDB 驱动)
- mgo – (未维护)用于 Go 语言的 MongoDB 驱动,它在一个非常简单的 API 下,按照标准的 Go 语法实现了丰富的、经过测试的功能选择
- mongo-go-driver – 官方 MongoDB Go 驱动
- neo4j – Neo4j Rest API Golang 绑定
- Neo4j-GO – Go 语言实现的 Neo4j REST Client
- neoism – 适用于 Go 的 Neo4j 客户端
- qmgo – MongoDB Go 驱动,基于官方的 MongoDB 驱动,不过和 Mgo 一样好用
- redeo – 兼容 Redis 协议的 TCP 服务器/服务
- redigo – Redigo 是一个为 Redis 数据库提供的 Go 客户端
- redis – Redis Go 客户端
- xredis – 类型安全、可定制的、简单易上手的 Redis 客户端
搜索&分析数据库
- bleve – 现代文本索引库
- elastic – Elasticsearch Go 客户端
- elasticsql – 在 Go 中将 sql 转化为 elasticsearch dsl
- elastigo – Elasticsearch 客户端库
- go-elasticsearch – 官方 Elasticsearch Go 客户端
- goes – 与 Elasticsearch 进行交互的库
- riot – Go 开源、分布式、简单高效的搜索引擎
- skizze – 概率论数据结构服务和存储
多个驱动后端
- cachego – 支持多个驱动的 Golang 缓存组件
- cayley – 支持多个后端驱动的 Graph 数据库
- dsc – SQL、NoSQL、结构化文件的数据库存储连接
- gokv – 简单键值存储抽象和 Go 实现(支持 Redis、Consul、etcd、bbolt、BadgerDB、LevelDB、Memcached、DynamoDB、S3、PostgreSQL、MongoDB、CockroachDB 以及更多)
日期和时间
日期和时间处理库
- carbon – 简单的时间扩展,有很多实用的方法,从 PHP Carbon 库移植而来
- cronrange – 解析 Cron 风格的时间范围表达式,检查给定时间是否在任何范围内
- date – 用于处理日期、日期范围、时间跨度、时间段和日期时间的 Go 扩展包
- dateparse – 在事先不知道格式的情况下解析日期
- durafmt – Go 时间段格式化库
- feiertage – 一套计算德国公共假日的函数库,包括德国各州(Bundesländer)的专门定制,如复活节、圣灵降临节、感恩节等
- go-persian-calendar – 在 Go 中实现波斯历(太阳节)
- go-str2duration – 转换字符串为时间段,支持 time.Duration 返回字符串等
- go-sunrise – 计算给定地点的日出和日落时间
- go-week – 一个高效的扩展包,用于处理 ISO8601 周日期
- iso8601 – 无需 regex 就能有效解析 ISO8601 日期时间
- kair – Golang 日期和时间格式化库
- now – Now 是一个 Golang 日期时间工具集
- NullTime –
time.Time
空值 - strftime – 兼容 C99 的字符串时间转化器
- timespan – 用于与时间间隔进行交互,定义为开始时间和持续时间
- timeutil – 扩展 Golang 是
time
包 - tuesday – 兼容 Ruby 的 Strftime 功能
分布式系统
用于构建分布式系统的包
- arpc – 更高效的网络通讯,支持双向通话、通知、广播
- celeriac – 在 Go 中为交互和监控 Celery 处理器、任务和事件添加支持的库
- consistent – 一致的哈希与有界的负载
- consistenthash – 通过可配置的副本实现一致的哈希
- dht – BitTorrent Kademlia DHT 实现
- digota – grpc 电商微服务
- dot – 使用操作转换/OT实现分布式同步
- doublejump – 改版后的谷歌跳转一致的哈希
- dragonboat – 通过 Go 实现的功能完整的高性能多组 Raft 库
- drmaa – 基于 DRMAA 标准的集群调度器作业提交库
- dynamolock – 基于 DynamoDB 的分布式锁实现
- dynatomic – 一个将 DynamoDB 作为原子计数器使用的库
- emitter-io – 用 MQTT、Websockets 和爱构建的高性能、分布式、安全和低延迟的发布-订阅平台
- flowgraph – 基于工作流的编程包
- gleam – 用纯 Go 和 Luajit 编写的快速可扩展的分布式 Map-Reduce 系统,结合了 Go 的高并发和 Luajit 的高性能,可独立或分布式运行
- glow – 易于使用的、可扩展的分布式大数据处理、Map-Reduce、DAG 执行,采用纯Go 实现。
- gmsec – 一个 Go 分布式系统开发框架
- go-health – 用于在服务中启用异步依赖性健康检查的库
- go-jump – 移植 Google 的 “Jump” 一致性哈希功能到 Go
- go-kit – 微服务工具包,支持服务发现、负载均衡、可插拔传输、请求跟踪等
- go-micro – 一个分布式系统开发框架
- go-mysql-lock – 基于 MySQL 的分布式锁实现
- go-pdu – 基于身份的分散式社交网络
- go-sundheit – 一个为 Go 服务定义异步服务健康检查提供支持的库
- gorpc – 简单、快速、可扩展的RPC库,适合高负载
- grpc-go – gRPC 的 Go 语言实现,基于 HTTP/2
- hprose – 非常新颖的 RPC 库,现在支持 25 种以上的语言
- jsonrpc – 帮助实现 JSON-RPC 2.0 的 jsonrpc 包
- jsonrpc – JSON-RPC 2.0 HTTP 客户端实现
- KrakenD – 带有中间件的超高性能 API 网关框架
- liftbridge – 用于 NATS 的轻量级容错消息流
- micro – 一个面向云计算及其他领域的分布式系统运行时
- NATS – 用于微服务、物联网和云原生系统的轻量级、高性能的消息系统
- outboxer – Outboxer 是一个实现了 outbox 模式的 Go 库
- pglock – 基于 PostgreSQL 实现的分布式锁
- pjrpc – 使用 Protobuf 规范实现的 Golang JSON-RPC Server-Client
- raft – Golang 实现的 Raft 共识协议,由 HashiCorp 公司开发
- raft – Go 实现的 Raft 共识协议,由 CoreOS 公司开发
- rain – BitTorrent 客户端和库
- redis-lock – 使用 Redis 简化分布式锁的实现
- resgate – 实时 API 网关,用于构建 REST、实时 RPC API,所有客户端无缝同步
- ringpop-go – 为 Go 应用提供可扩展、容错的应用层分片
- rpcx – 分布式可插拔的 RPC 服务框架,类似阿里巴巴 Dubbo 框架
- Semaphore – 一个直接的(微)服务编排器
- sleuth – 用于无主 p2p 自动发现和HTTP 服务之间的 RPC 库(使用ZeroMQ)
- tendermint – 高性能中间件,用于使用 Tendermint 共识和区块链协议将任何编程语言编写的状态机转化为拜占庭容错复制的状态机
- torrent – BitTorrent 客户端扩展包
动态 DNS
更新动态 DNS 记录的库
- DDNS – 以 Digital Ocean Networking DNS 为后台的个人 DDNS 客户端
- dyndns – 后台 Go 进程,定期自动检查您的 IP 地址,并在您的地址变化时更新(一个或多个)谷歌域名的动态 DNS 记录
- GoDNS – 一个动态 DNS 客户端工具,支持 DNSPod 和 HE.net,用 Go 语言编写
邮件
实现邮件创建和发送的库和工具
- chasquid – Go 语言编写的 SMTP 服务器
- douceur – 用于 HTML 邮件的 CSS 内联程序
- email – 一个强大而灵活的 Go 电子邮件库
- email-verifier – 一个用于电子邮件验证的 Go 库,无需真正发送任何电子邮件
- go-dkim – DKIM 库,用于签署和验证电子邮件
- go-email-validator – 模块化的电子邮件验证器,用于语法、一次性、SMTP 等检查。
- go-imap – 客户端和服务器的 IMAP 库
- go-message – 互联网信息格式和邮件信息的流媒体库
- 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 测试
- SendGrid – 用于发送电子邮件的 SendGrid Go 库
- smtp – SMTP 服务器协议状态机
嵌入脚本语言
在 Go 代码中嵌入其他语言
- anko – 用 Go 编写的脚本解释器
- binder – Go Lua 绑定库,基于gopher-lua
- cel-go – 快速、便携、非图灵完整的表达式评估与渐进式输入
- ecal – 一个简单的可嵌入的脚本语言,支持并发事件处理
- expr – Go 的表达式评估引擎:快速、非图灵完备、动态输入、静态输入
- gentee – 嵌入式脚本编程语言
- gisp – 在 Go 中嵌入 LISP
- go-duktape – 将 Duktape JavaScript 引擎嵌入 Go
- go-lua – 将 Lua 5.2 虚拟机移植到 Go
- go-php – 将 PHP 嵌入到 Go
- go-python – 将 CPython C-API 嵌入到 Go
- goja – 在 Go 中实现 ECMAScript 5.1+
- golua – 将 Lua C API 嵌入到 Go
- gopher-lua – 通过 Go 编写的 Lua 5.1 虚拟机和编译器
- gval – 一个用 Go 编写的高度可定制的表达语言
- ngaro – 嵌入式 Ngaro 虚拟机实现,在 Retro 中启用脚本
- purl – 将 Perl 5.18.2 嵌入到 Go
- tengo – Go 字节码编译脚本语言
错误处理
错误处理库
- 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 扩展包
- tracerr – 带有堆栈追踪和源码碎片的 Golang 错误包
文件处理
处理文件和文件系统的库
- afero – Go FileSystem 抽象系统
- afs – Go 抽象文件存储(mem, scp, zip, tar, cloud: s3, gs)
- baraka – 一个轻松处理 HTTP 文件上传的库
- bigfile – 一个文件传输系统,支持用 HTTP API、RPC 调用和 FTP 客户端管理文件
- checksum – 计算消息摘要,如 MD5 和 SHA256,用于大文件
- copy – 递归拷贝目录
- flop – 文件操作库,其目的是与GNU cp镜像特征奇偶性
- go-csv-tag – 使用标签加载csv文件
- go-decent-copy – 文件拷贝库
- go-exiftool – 用于 ExifTool 的 Go 绑定,这个著名的库用于从文件(图片、PDF、office 等)中提取尽可能多的元数据(EXIF、IPTC…)
- go-gtfs – 在 Go 中加载 gtfs 文件
- gut/yos – 简单可靠的文件操作包,如对文件、目录和符号链接的复制/移动/diff/列举
- notify – 具有简单 API 的文件系统事件通知库,类似于os/signal
- opc – 为 Go 加载开放封装协议(OPC)文件
- parquet – 读写 parquet 文件
- pdfcpu – PDF 处理器.
- skywalker – 让人们可以同时轻松浏览一个文件系统的包
- stl – 读取和写入 STL(立体光刻)文件的模块,通过并发算法进行读取
- tarfs -为 tar 文件实现
FileSystem
接口 - todotxt – Go Gina Trapani todo.txt 文件处理库,支持解析和操作 todo.txt format 中的任务列表
- vfs – 一套可插拔的、可扩展的、有主见的文件系统,适用于 Go 的 os、S3 和 GCS 等多种文件系统类型
会计&财务
会计和财务方面的库
- accounting – Go 金钱和货币格式化库
- currency – 处理货币金额、提供货币信息和格式化处理
- 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 中实现限价订单簿匹配引擎
- sleet – 一个统一的界面,让多个支付服务提供商(PsP)处理在线支付
- techan – 技术分析库,具有先进的市场分析和交易策略
- transaction – 嵌入式账户事务数据库,以多线程模式运行
- vat – 增值税号验证和欧盟增值税税率
表单
处理表单的库
- bind – 将表格数据绑定到任何 Go 类型值
- binding – 将 net/http 请求中的表单和 JSON 数据绑定到结构体中
- conform – 控制用户的输入,根据结构化标签对数据进行修剪、清理和擦洗
- form – 将 url.Values 解码为 Go 值,将 Go 值编码为 url.Values,支持双数组和全图
- formam – 将表单的值解码成一个结构体
- forms – 用于解析和验证表单/JSON 数据的框架无关库,支持 multipart 类型表单和文件上传
- gorilla/csrf – 为 Go 网络应用和服务提供 CSRF 保护
- nosurf – Go CSRF 保护中间件
- qs – 用于将结构体编码为 URL 查询参数的 Go 模块
- queryparam – 将 url.Values 解码为标准或自定义类型的可用结构体值
函数式编程
在 Go 中支持函数式编程的库
- fpGo – Monad,Golang 的函数式编程特性
- fuego – Go 函数式编程体验
- go-underscore – Go 函数式编程实用工具集合
游戏开发
游戏开发库
- Azul3D – Go 编写的 3D 游戏引擎
- Ebiten – Go 编写的 2D 游戏库
- engo – Engo 是一个用 Go 编写的开源 2D 游戏引擎,它遵循实体-组件-系统范式
- g3n – Go 3D 游戏引擎
- go-astar – Go 实现的 A* 路径查找算法
- go-sdl2 – 在 Go 中绑定 Simple DirectMedia Layer
- go3d – 面向 Go 的高性能 2D/3D 数学包
- gonet – 用 Golang 实现的游戏服务器骨架
- goworld – 可扩展的游戏服务器引擎,具有空间实体框架和热插拔功能
- Leaf – 轻量级游戏服务器框架
- nano – 基于 Go 实现轻量级、高性能游戏服务器框架
- Oak – 纯 Go 实现的游戏引擎
- Pitaya – 可扩展的游戏服务器框架,支持集群,通过 C SDK 为 iOS、Android、Unity 等提供客户端库
- Pixel – 在 Go 中手绘 2D 游戏库
- prototype – 跨平台(Windows/Linux/Mac)的库,用于使用最小的 API 创建桌面游戏
- raylib-go – Go绑定的raylib,一个简单易用的电子游戏编程学习库
- termloop – 基于终端的 Go 游戏引擎,构建在 Termbox 之上
- tile – 面向数据和缓存友好的 2D 网格库(TileMap),包括路径查找、观察者和导入/导出
代码生成和泛型
通过代码生成来增强语言功能的工具,比如泛型
- efaceconv – 代码生成工具,用于从
interface{}
到不可变类型的高性能转换,无需分配 - gen – 类似泛型功能的代码生成工具
- generis – 代码生成工具,提供通用代码、自由格式宏、条件编译和 HTML 模板
- go-enum – 根据代码注释生成枚举代码
- go-linq – 在 Go 中实现类似 .NET LINQ 的查询方法
- go-xray – 让反射更好使用的辅助工具
- goderive – 从输入类型导出函数
- gotype – Golang 源码解析,用法就像 reflect 包一样
- GoWrap – 使用简单的模板为 Go 接口生成装饰器
- interfaces – 用于生成接口定义的命令行工具
- jennifer – 无需模板即可生成任意 Go 代码
- pkgreflect – 包作用域反射的 Go 预处理程序
- typeregistry – 一个用于动态创建类型的库
地理位置
地理位置工具和服务器
- geocache – 内存缓存,适合基于地理位置的应用
- geoserver – geoserver 是一个通过 GeoServer REST API 操纵 GeoServer 实例的 Go 包
- gismanager – 将您的 GIS 数据(矢量数据)发布到 PostGIS 和 Geoserver
- mbtileserver – 一个简单的基于 Go 的服务器,用于存储 mbtiles 格式的地图磁贴
- osm – 用于读取、编写和处理 OpenStreetMap 数据和 API 的库
- pbf – Golang OpenStreetMap PBF 编码器/解码器
- S2 geojson – 将 geojson 转换为 S2 单元,并在地图上演示一些 S2 几何特征
- S2 geometry – 在 Go 中使用 S2 几何库
- Tile38 – 地理定位数据库,具有空间索引和实时地理定位功能
- WGS84 – 坐标转换和变换库(ETRS89、OSGB36、NAD83、RGF93、Web Mercator、UTM)
Go 编译器
将 Go 编译成其他语言的库
- c4go – 将 C 代码转为 Go 代码
- f4go – 将 FORTRAN 77 代码转为 Go 代码
- gopherjs – 将 Go 代码编译为 JavaScript 代码
- tardisgo -将 Golang 代码转化为 Haxe 再转化为 CPP/CSharp/Java/JavaScript 代码
协程
管理和处理 Go 协程的工具
- ants – 高性能、低成本的 Go 协程池
- artifex – Golang 实现的简单内存作业队列,使用基于队列处理器的调度
- async – 一个替代性的 Go 同步库(Future, Promise, Locks)
- async – 一种安全的异步执行函数的方式,在 panic 时恢复函数
- breaker – 通过灵活的机制使执行流程可中断
- channelify – 将函数转换为返回通道,以便进行简单而强大的并行处理
- concurrency-limiter – 并发限制器,支持超时、动态优先级和取消协程的上下文
- conexec – 一个帮助高效安全并发执行 funcs 的并发工具箱,支持指定整体超时以避免阻塞,并使用 goroutine pool 提高效率
- cyclicbarrier – Golang 版 CyclicBarrier 实现
- go-floc – 轻松编排协程
- go-flow – 控制协程执行顺序
- go-tools/multithreading – 使用这个轻量级的库和一个简单的 API 来管理一个协程池
- go-trylock – 在 Golang 的读写锁上支持 TryLock
- go-waitgroup – 像
sync.WaitGroup
一样具有错误处理和并发控制功能 - goccm – Go 并发管理包限制了允许并发运行的 goroutine 的数量
- gohive – 用于 Golang 的高性能和易于使用的 goroutine 池
- gollback – 异步简单函数实用工具,用于管理闭包和回调的执行
- goworker – goworker 是一个基于 Go 的后台处理器
- gowp – gowp 是限制并发量的协程池
- gpool – 管理一个可调整大小的上下文感知 goroutine 池,以约束并发量
- grpool – 轻量级 Goroutine 池
- hands – 用于控制多个goroutine的执行和返回策略的过程控制器
- Hunch – Hunch提供了诸如
All
、First
、Retry
、Waterfall
之类的方法,使异步流控制更加直观 - kyoo – 提供无限制的作业队列和并发的处理器池
- neilotoole/errgroup – 作为
sync/errgroup
的替代方案,仅限于 N 个 worker goroutine 的池子 - nursery – 在 Go 中进行结构化并发
- oversight – Oversight 是 Erlang 监督树的完整实现
- parallel-fn – 并行运行函数
- pond – 用 Go 编写的最小化和高性能的goroutine 处理器池
- pool – 有限的协程消费者或者无限的协程池,以便更轻松地处理/取消协程
- queue – 给你一个类似于队列组的
sync.WaitGroup
的访问权限,帮助你节制和限制协程,等待所有协程的结束等等 - routine – 带上下文的协程控制,支持 Main、Go、Pool 以及其它执行器
- semaphore – Semaphore 模式实现,基于通道和上下文实现锁/解锁操作超时
- semaphore – 基于 CAS 的快速可调整 Semaphore 实现(比基于通道的 Semaphore 实现更快)
- stl – 基于软件事务内存(STM)并发控制机制的软件事务锁
- threadpool – Golang 线程池实现
- tunny – Golang 协程池实现
- worker-pool – goworker 是一个简单的 Go 异步线程池实现
- workerpool – 一个限制任务执行的并发量,而不是任务排队数量的协程池实现
GUI(图形化)
构建 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: 嵌入式 HTML/CSS/JS 脚本引擎,用于现代桌面 UI 开发,跨平台
- gotk3 – 将 GTK3 集成到 Go
- gowd – 使用 GO、HTML、CSS 和 NW.js 进行快速简单的桌面 UI 开发,跨平台
- qt – 将 Qt 集成到 Go(主持 Windows/macOS/Linux/Android/iOS/Sailfish OS/Raspberry Pi)
- ui – Go 的平台原生 GUI 库,跨平台
- Wails – Mac、Windows、Linux 桌面应用程序,使用操作系统内置的 HTML 渲染器渲染 HTML 用户界面
- walk – 适用于 Go 的 Windows 应用程序库包
- webview – 具有简单双向 JavaScript 绑定的跨平台 webview 窗口(Windows/macOS/Linux)
交互
- go-appindicator – 在 Go 中集成 libappindicator3 C 库
- gosx-notifier – Go OSX 桌面通知库
- mac-activity-tracker – OSX 库,用于通知机器上的任何(可插拔)活动
- mac-sleep-notifier – Golang 中的 OSX 睡眠/唤醒通知
- robotgo – Go 原生跨平台 GUI 系统自动化,可用于控制鼠标、键盘等
- systray – 跨平台的 Go 库,用于在通知区域放置图标和菜单
- trayhost – 跨平台的 Go 库,用于在主机操作系统的任务栏中放置一个图标
硬件
和硬件交互的库、工具、教程
阅读 go-hardware 查看完整列表。
图片处理
图片操作库
- bild – 纯 Go 实现的图片处理算法集合
- bimg – 使用 libvips 进行快速高效的图像处理包。
- cameron – Go 头像生成器
- canvas – 矢量图形转换为 PDF、SVG 或光栅化图像
- darkroom – 一个具有可改变的存储后端和图像处理引擎的图像代理,注重速度和弹性
- draft – 使用简单的 YAML 语法为 GraphViz 生成高级微服务架构图
- geopattern – 从字符串中创建美丽的生成图像模式
- gg – 纯 Go 实现的 2D 渲染
- gift – 图像处理过滤器包
- gltf – 高效且强大的 glTF 2.0 读取器、写入器和验证器
- go-cairo – 在 Go 中集成开罗图形库
- go-gd – 在 Go 中集成 GD 库
- go-nude – 使用 Go 进行裸体检测
- go-opencv – 在 Go 中集成 OpenCV
- go-webcolors – 将 Python webcolors 库移植到 Go
- gocv – 使用 OpenCV 3.3+ 计算机视觉的 Go 扩展包
- goimagehash – Go 感知图像散列包
- goimghdr – 判断文件中包含的图像类型的 imghdr 模块
- govatar – 用于生成有趣头像的库和命令行工具
- govips – Go 快速图像处理和大小调整库
- gridder – 基于网格的 2D 图形库
- image2ascii – 将图片转化为 ASCII
- imagick – 在 Go 中集成 ImageMagick 的 MagickWand C API
- imaginary – 快速简单的 HTTP 微服务,用于调整图片大小
- imaging – 简单的 Go 图像处理扩展包
- img – 选择图像处理工具
- ln – 在 Go 中进行 3D 线条艺术渲染
- mergi – 用于图像处理(合并、裁剪、调整大小、水印、动画)的工具 & Go库
- mort 用 Go 编写的存储和图像处理服务器
- mpo – MPO 3D照片的解码和转换工具
- picfit – 一个用 Go 编写的图像大小调整服务器
- pt – 用 Go 编写的路径追踪引擎
- resize – 在 Go 中用常见的插值方法调整图像大小
- rez – 在纯 Go 和 SIMD 中调整图片大小
- smartcrop – 为任意图像和裁剪尺寸找到好的裁剪方式
- steganography – 用于 LSB 加密的纯 Go 库
- stegify – 用于 LSB 窃取的工具,能够隐藏图像中的任何文件
- svgo – 用于生成 SVG 的 Go 语言库
- tga – tga 扩展包是一个 TARGA 图像格式解码器/编码器
- webp-server – 最小化的简单图像服务器,能够对图片进行存储、调整大小、转换和缓存操作
IoT (物联网)
用于物联网设备编程的库
connectordb – 量化自身与物联网的开源平台
- devices – 物联网设备的套件库,提供实验性 x/exp/io
- eywa – Eywa 项目本质上是一个跟踪连接设备的连接管理器
- flogo – Flogo 项目是一个开源的物联网边缘应用与集成框架
- gatt – Gatt 是一个用于构建蓝牙低能耗外设的 Go 扩展包
- gobot – Gobot 是一个机器人、物理计算和物联网的框架。
- huego – 为 Go 提供的飞利浦 Hue 客户端库
- iot – IoT 是实现谷歌物联网核心设备的一个简单框架
- mainflux – 工业物联网消息和设备管理服务器
- periph – 外围设备 I/O 与低级板设施连接
- sensorbee – 用于物联网的轻量级流处理引擎
任务调度
处理调度任务的库
clockwerk – 使用简单的流式语法来调度周期性任务的 Go 扩展包
- clockwork – 简单直观的 Go 任务调度库
- cronticker – 一个支持 Cron 计划的 ticker 实现
- go-cron – Go 的简单 Cron 库,可以在特定的日期和时间,以不同的时间间隔执行闭包或函数,从一秒钟一次到一年一次,主要用于 Web 应用和长期运行的守护进程
- go-quartz – 简单、零依赖的 Go 调度库
- gocron – 简单流畅的 Go 任务调度库,这是一个积极维护的jasonlvhit/gocron分支
- gron – 使用一个简单的 Go API 定义基于时间的任务,Gron 的调度器将调用并运行它们
- JobRunner – 智能且功能丰富的 Cron 任务调度器,内置作业队列和实时监控
- jobs – 持久而灵活的后台工作库
- leprechaun – 任务调度器,支持Webhook、Cron 和经典调度
- scheduler – 让 Cron 任务调度变得简单
JSON
处理 JSON 的库
- ajson – 支持 JSONPath 的 Golang 抽象 JSON 库
- dynjson – 适用于动态 API 的客户端可定制 JSON 格式
- ej – 简明扼要地写入和读取不同来源的 JSON
- epoch – 内置时间和 Unix 时间戳的相互转化,时间类型是 JSON 格式
- fastjson – 快速 JSON 解析器和验证器,没有自定义结构,没有代码生成,没有反射
- gjo – 创建 JSON 对象的小型工具集
- GJSON – 只需一行代码即可获得 JSON 值
- go-jsonerror – Go-JsonError旨在让我们能够轻松创建符合 JsonApi 规范的 JSON 响应错误
- go-respond – 用于处理常见 HTTP JSON 响应的 Go 扩展包
- gojq – 在 Golang 中进行 JSON 查询
- gojson – 从 JSON 示例中自动生成 Go 结构体定义
- JayDiff – 用 Go 编写的 JSON diff 工具
- jettison – 提供快速灵活的 Go JSON 编码器
- JSON-to-Go – 将 JSON 转化为 Go 结构体
- json2go – JSON 与 Go 结构体的高级转换工具,提供了能够解析多个 JSON 文档并创建适合所有文档的结构体的包
- jsonapi-errors – 基于 JSON API 错误引用的 Go 绑定
- jsondiff – 基于 RFC6902(JSON补丁)的 Go JSON diff 库
- jsonf – 用于高亮格式化和结构化查询匹配 JSON 的控制台工具
- jsongo – 让创建 JSON 对象更容易的 Fluent API
- jsonhal – 一个简单的 Go 包,将自定义结构体编码为兼容 HAL 的 JSON 响应
- jsonic – 用来处理和查询 JSON 的工具,不需要以类型安全的方式定义结构
- jzon – 兼容标准 API/行为的 JSON 库
- kazaam – 对 JSON 文档进行任意转换的 API
- mapslice-json – Go MapSlice,用于对 JSON 中的字典进行有序解析/反解析
- mp – 简单的命令行邮件解析器,它目前接受标准输入并输出 JSON
日志
日志文件生成和处理库
- distillog – 精炼的分级日志(可以把它想象成stdlib + log levels)
- glg – glg 是一个简单、快速的 Go 分级日志库
- glo – 受 PHP Monolog 启发的日志库,具有同样的日志等级
- glog – 适用于 Go 的分级执行日志
- go-cronowriter – 简单的写入器,可以根据当前日期和时间自动轮替日志文件,就像 cronolog 一样
- go-log – 一个包含轨迹追踪、对象转储和可选时间戳的日志库
- go-log – 简单可配置的Go 记录库,包括级别、格式化和写入器
- go-log – 包含级别和多个处理器的 Go 日志库
- go-log – Go 版本 Log4j 实现
- go-logger – 简单的 Go 程序日志库,包含级别处理器
- gologger – 简单易用的 Go 日志库,支持在 Colored Console、Simple Console、File 或 Elasticsearch 中记录日志
- gomol – 多输出、结构化的 Go 日志库,具有可扩展的日志输出功能
- gone/log – 快速、可扩展、全功能、兼容 std-lib 源的日志库
- httpretty – 在终端美观打印出常规 HTTP 请求,以便于调试(类似 http.DumpRequest)
- journald – Systemd Journal 原生 API 的 Go 实现,用于日志记录
- kemba – 一个受debug启发的小型调试日志工具,非常适合 CLI 工具和应用程序
- log – 一个 O(1) 日志系统,支持将一个日志连接到多个写入器(例如 stdout、文件或者 TCP 连接)
- log – Go 结构化日志包
- log – 简单、可配置、可扩展的 Go 结构化日志库
- log – Go 的结构化日志接口,用于将日志门面与它的具体实现隔离开来
- log-voyage – 用 Go 编写的全功能日志 SAAS
- log15 – 简单、功能强大的 Go 日志库
- logdump – 多级日志包
- logex – Golang 日志库,支持跟踪和级别,由标准日志库封装
- logger – 适用于 Go 的最小化日志库
- logmatic – 为 Golang 提供的具有动态日志级别配置的彩色日志库
- logo – 可配置多个写入器的 Golang 日志
- logrus – Go 结构化日志库
- logrusiowriter – 通过 logrus 日志实现的
io.Writer
- logrusly – 用于发送错误到 Loggly 的 logrus 插件
- logur – 一个优秀的日志接口,聚合了日志的最佳实践,并且为一些流行的日志库提供了适配器和集成(logrus、go-kit log、zap、zerolog 等)
- logutils – 用于在 Go 中扩展标准日志库的实用工具
- logxi – 12-factor 应用日志库
- lumberjack – 实现了 io.WriteCloser 的简单日志库.
- mlog – 简单的 Go 日志模块,包含 5 个等级,1 个可选的轮替日志文件功能以及 stdout/stderr 输出
- onelog – Onelog 是一个非常简单但又非常高效的 JSON 日志,它是目前所有场景下最快的 JSON 日志,同时,它也是资源分配最少的日志之一
- ozzo-log – 高性能日志,支持日志级别、分类和过滤,可以发送过滤后的日志消息给多个目标(比如控制台、网络、邮件等)
- phuslu/log – Structured Logging Made Easy.
- rollingwriter – RollingWriter 是一个自动轮替的
io.Writer
实现,支持通过多个策略来提供日志轮替功能 - seelog – 有灵活的调度、过滤和格式化的日志功能
- spew – 为 Go 数据结构实现一个深层的美观打印功能,以帮助调试
- sqldb-logger – 一个用于 Go SQL 数据库驱动的日志,无需修改现有的 *sql.DB stdlib 用法。
- stdlog – Stdlog 是一个面向对象的分级日志库,适用于调度任务
- tail – 模仿 BSD tail 程序的 Go 包
- xlog – 插件式架构的灵活 Go 日志系统,带有分级控制、多个日志输出目标和自定义日志格式等功能
- xlog – 为可以感知
net/context
的 HTTP 处理器提供的结构化日志库 - zap – 快速、结构化、分级日志库
- zerolog – 零分配 JSON 日志库
- zkits-logger – 一个功能强大的零分配 JSON 日志库
机器学习
机器学习库
- bayesian – 基于 Golang 的原生贝叶斯分类
- CloudForest – 基于纯 Go 实现的、快速、灵活、多线程的、用于机器学习的决策树集合
- eaopt – 一个演化优化库
- evoli – 遗传算法与粒子群优化库
- fonet – 基于 Go 编写的深度神经网络库
- go-cluster – k-models 和 k-prototypes 聚类算法的 Go 实现
- go-deep – 基于 Go 的、特征丰富的神经网络库
- go-fann – 快速人工神经网络(FANN)库的 Go 实现
- go-featureprocessing – 在 Go 中进行快速便捷的特征处理,实现低延迟的机器学习
- go-galib – 基于 Go 编写的遗传算法库
- go-pr – Golang 中的模式识别包
- gobrain – 基于 Go 编写的神经网络
- godist – 多种概率分布,以及相关方法
- goga – Go 遗传算法库
- GoLearn – Go 通用机器学习库
- golinear – 在 Go 中集成 liblinear
- GoMind – 一个简单的 Go 神经网络库
- goml – Go 在线机器学习库
- gonet – 适用于 Go 的神经网络
- Goptuna – 用 Go 编写的黑盒函数的贝叶斯优化框架
- goRecommend – 用 Go 编写的推荐算法库
- gorgonia – 基于图的计算库,比如Theano for Go,它提供了构建各种机器学习和神经网络算法的基元
- gorse – 一个用 Go 编写的、基于协同过滤的离线推荐系统后台
- goscore – 针对 PMML 的 Go Scoring API
- gosseract – 使用 Tesseract C++ 库来实现 OCR(光学字符识别)的 Go 包
- libsvm – libsvm golang 版本,基于 LIBSVM 3.14
- neat – 即插即用、并行的 Go 框架,适用于 NeuroEvolution of Augmenting Topologies(NEAT)
- neural-go – 在 Go 中实现多层感知器网络,通过反向传播进行训练
- ocrserver – 一个简单的 OCR API 服务器,很容易通过 Docker 和 Heroku 部署
- onnx-go – Go 开放神经网络交换(ONNX)接口
- probab – 概率分布函数,贝叶斯推理,用纯 Go 语言编写
- randomforest – 易于使用的 Go Random Forest 库
- regommend – 推荐与协同过滤引擎
- shield – 适用于 Go 的贝叶斯文本分类器,具有灵活的 tokenizers 和存储后端
- tfgo – 简单易用的 Tensorflow 库:简化了 Tensorflow Go 官方库的使用,可以在 Go 中定义计算图形,加载并执行用 Python 训练的模型
- Varis – Golang 神经网络
消息系统
消息系统实现库
- ami – 基于 Redis Cluster Streams 的可靠队列 Go 客户端
- APNs2 – 适用于 Go 的 HTTP/2 苹果推送通知提供商 —— 可以向 iOS、tvOS、Safari 和 OSX 应用程序发送推送通知
- Asynq – 一个基于 Redis 构建的简单、可靠、高效的 Go 分布式任务队列
- Beaver – 一个实时消息服务器,可用于构建可扩展的应用内通知、多人游戏、支持 Web 和 移动端的聊天应用
- Benthos – 在多个协议之间传递消息流的库
- Bus – 内部通信的最小化消息总线实现
- Centrifugo – Go 实时消息(基于 Websockets 或 SockJS)服务器
- Commander – 一个高级事件驱动的消费者/生产者,支持各种”方言”,如 Apache Kafka
- Confluent Kafka Golang Client – confluent-kafka-go 是 Confluent 为 Apache Kafka 和 Confluent 平台开发的 Golang 客户端
- 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-mq – 具备声明式配置的 RabbitMQ 客户端
- go-notify – freedesktop 通知规范的原生实现
- go-nsq – NSQ 的官方 Go 扩展包
- go-res – 使用 NATS 和 Resgate 构建 REST/实时服务扩展包,客户端是无缝同步的
- go-socket.io – golang socket.io 库, 一个实时应用框架
- go-vitotrol – Viessmann Vitotrol 网络服务的客户端库
- Gollum – 多路复用器,收集不同来源的信息,并将其广播到一组目的地
- golongpoll – HTTP longpoll 服务器库,让 web pub-sub 变得简单
- gopush-cluster – gopush-cluster 是一个 go 推送服务器集群
- gorush – 使用APNs2 和 Google GCM实现的推送通知服务器
- gosd – 一个用于调度何时向通道发送消息的库
- guble – 使用推送通知(Google Firebase Cloud Messaging、Apple Push Notification 服务、SMS)以及 Websockets、REST API 构建的消息服务器,具有分布式操作和消息持久性功能
- hare – 一个用于发送消息和监听 TCP 套接字的用户友好库
- hub – 一个用于 Go 应用程序的消息/事件集线器,使用发布/订阅模式,支持别名
- jazz – 一个简单的 RabbitMQ 抽象层,用于队列管理以及消息的发布和消费
- machinery – 基于分布式消息传递的异步任务队列/作业队列。
- mangos – 纯 Go 实现的、带有传输交互性的 Nanomsg(可伸缩协议)
- melody – 用于处理 Websocket 会话的极简框架,包括广播和自动 ping/pong 处理
- Mercure – 使用 Mercure 协议调度服务器发送更新(基于 Server-Sent Events)的库
- messagebus – messagebus 是一个简单的 Go 异步消息总线,尤其擅长于作为处理事件源、CQRS、DDD 的事件总线
- NATS Go Client – 轻量级、高性能的发布订阅和分布式队列消息系统
- nsq-event-bus – 围绕 NSQ 话题和频道的小封装库
- oplog – REST API 的通用 oplog/replication 系统
- pubsub – 简单的 Go 发布订阅包
- rabbus – 在 amqp 交换和队列上的一个小封装库
- rabtap – RabbitMQ 瑞士军刀命令行应用
- RapidMQ – RapidMQ 是用于管理本地消息队列的轻量级可靠库
- redisqueue – redisqueue 是一个使用 Redis Streams 驱动的队列作为生产者和消费者的库
- rmqconn – RabbitMQ 重连,封装了 amqp.Connection 和 amqp.Dial,当连接断开时会在调用 Close() 关闭连接前允许重连
- sarama – Apache Kafka Go 库
- Uniqush-Push – Redis 驱动的统一推送服务,用于向移动设备发送应用通知
- zmq4 – 针对 ZeroMQ 版本 4 的 Go 接口,兼容 版本 3 和 版本 2
Office 软件
- unioffice – 用于创建和处理 Word(.docx)、Excel(.xlsx) 和 Powerpoint(.pptx) 文档的纯 Go 库
Excel
Excel 处理库
- excelize – 用于读写 Microsoft Excel™ (XLSX) 文件的 Golang 库
- go-excel – 一个简单轻巧的阅读器,可以把一个类似于 relative-db 的 Excel 当做一个表格来读
- goxlsxwriter – Golang 集成 libxlsxwriter 编写 XLSX (Microsoft Excel) 文件
- xlsx – 简化 Go 程序中最新版本 Microsoft Excel 所使用的 XML 格式的读取
- xlsx – 在 Go 程序中快速安全地读取/更新现有的 Microsoft Excel 文件
其他
依赖注入
依赖注入处理库
- alice – 为 Golang 添加依赖注入容器
- container – 一个功能强大的 IoC 容器,界面流畅,易于使用
- di – 一个用于 Go 语言的依赖注入容器
- dig – 一个基于反射的 Go 依赖注入工具包
- dingo – 一个基于 Guice 的 Go 依赖注入工具包
- fx – 一个基于依赖注入的 Go 应用框架(建立在 dig 之上)
- gocontainer – 简单依赖注入容器
- goioc/di – 受 Spring 启发的依赖注入容器
- linker – 一个基于反射的依赖注入和反转控制库,支持组件生命周期
- wire – 为 Golang 提供严格的运行时依赖注入
项目布局
非官方的项目目录结构模式集合
- cookiecutter-golang – 一个 Go 应用程序模板,用于按照生产最佳实践快速启动项目
- go-sample – 一个带有真实代码的 Go 应用项目的布局示例。
- go-todo-backend – Go Todo 项目后端示例,采用模块化项目布局以便于构建微服务
- golang-standards/project-layout – Go 生态系统中常见的传统和新兴项目布局模式合集
- golang-templates/seed – Go 应用 GitHub 仓库模板
- modern-go-application – 现代化的 Go 应用模板和示例
- scaffold – Scaffold 可以生成一个入门级的 Go 项目布局,从而让开发者专注于业务逻辑的实现
字符串
字符串处理库
- go-formatter – 实现替换字段,用大括号”{}”包裹格式化字符串
- gobeam/Stringy – 字符串操作库,可将字符串转换为 camel case,snake case,kebab case / slugify 等
- strutil – 字符串工具集
- xstrings – 从其他语言移植过来的有用的字符串函数集合
未分类
- anagent – 简约、可插拔的 Golang evloop/timer 处理程序,具有依赖注入功能
- antch – 一个快速、强大、可扩展的网络爬虫框架
- archiver – 用于制作和解压 .zip 和 .tar.gz 压缩文件的库和命令
- autoflags – 可以从结构体字段自动定义命令行标识的 Go 扩展包
- avgRating – 根据威尔逊得分公式计算平均得分和评分
- banner – 在您的 Go 应用程序中添加漂亮的横幅
- base64Captcha – Base64captch 支持数字、字母、算术、音频和数字字母验证码
- battery – 跨平台、标准化的电池信息库
- bitio – 高度优化的 Go 位级读写器
- browscap_go – Browser Capabilities Project 的 Go 库
- captcha – captcha 扩展包为验证码生成提供了一个易于使用的、配置优于约定的 API
- conv – conv 扩展包为不同 Go 类型提供了快速直观的转化
- datacounter – readers/writer/http.ResponseWriter Go 计数器
- faker – Go 随机伪造数据和结构体生成器
- ffmt – 显示人类可读的美观数据
- gatus – 自动化服务健康仪表盘
- ghorg – 快速将整个组织/用户仓库克隆到一个目录中,支持GitHub、GitLab 和 Bitbucket
- 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 – 公开国家和分区数据的软件包
- health – 易于使用、可扩展的健康检查库
- healthcheck – 一个针对 RESTful 服务的、约定优于配置的并发健康检查 HTTP 处理器
- hostutils – 一个用于打包和解压 FQDNs 列表的 Golang 库
- indigo – 使用 Sonyflake 和 Base58 编码的分布式唯一 ID 生成器
- lk – 一个简单的 Golang 授权许可库
- llvm – 在纯 Go 中与 LLVM IR 交互的库
- metrics – 用于监控基础设施和 Prometheus 阐述的库
- morse – 用于转换摩尔斯电码的库
- numa – NUMA 是一个实用程序库,它是用 Go 编写的,它帮助我们编写一些 NUMA-AWARED 代码
- pdfgen – 从 JSON 请求中生成 PDF 的 HTTP 服务
- persian – Go 中一些用于波斯语的实用工具
- sandid – 地球上的每一粒沙子都有自己的 ID
- shellwords – 一个 Golang 库,用于根据 UNIX Bourne shell 的单词解析规则操作字符串
- shortid – 分布式生成超短的、唯一的、非连续的、URL 友好的 ID
- shoutrrr – 提供了对各种消息服务进行简单访问的通知库,如 slack、mattermost、gotify 和 smtp 等
- stateless – 一个用于创建状态机的流式库
- stats – 监控 Go MemStats + 系统统计,如内存、Swap 和 CPU,并通过 UDP 发送到任何你想记录的地方
- turtle – Go Emoji 表情
- url-shortener – 一个现代的、强大的、健壮的、支持 MySQL 的短 URL 微服务
- VarHandler – 生成 HTTP 输入和输出处理的模板
- xdg – FreeDesktop.org (xdg) 规范在 Go 中的实现
- xkg – X 键盘抓取器
自然语言处理
自然语言处理库
- address – 处理地址表示,验证和格式化
- detectlanguage – 语言检测 API Go 客户端,支持批量请求、短语或单词检测
- getlang – 快速自然语言检测包
- go-i18n – 包和附带的工具,用于处理本地化文本。
- go-localize – 简单易于使用的 i18n(国际化和本地化)引擎,用于翻译本地字符串
- go-mystem – Yandex.Mystem 的 CGo 绑定 —— 俄语形态分析器
- go-nlp – 用于处理离散概率分布的实用工具,以及其他对做 NLP 工作有用的工具
- go-pinyin – 中国汉字到汉语拼音的转换器
- go-stem – 波特词干算法实现
- go-unidecode – Unicode 文本的 ASCII 码翻译
- go2vec – word2vec 嵌入的读取器和实用函数
- gojieba – 中文分词算法jieba的 Go 实现
- golibstemmer – 雪球 libstemmer 库的 Go 绑定,包括 porter 2
- gosentiwordnet – 在 Go 中使用 sentiwordnet 词典的情感分析器
- gotokenizer – 为 Golang 提供的基于字典和 Bigram 语言模型的 tokenizer,现在只支持中文分割
- gounidecode – Go Unicode 翻译器
- govader – VADER Sentiment Analysis 的 Go 实现
- gse – 高效的文本分割,支持英文、中文、日文等
- icu – icu4c C 库检测和转换功能的 Cgo 绑定,保证与 50.1 版本兼容
- iuliia-go – 将西里尔语翻译成拉丁语
- kagome – 用纯 Go 编写的 JP 形态分析器
- libtextcat – 为 libtextcat C 库提供 Cgo 绑定,保证与 2.2 版本兼容
- MMSEGO – 这是中文分词算法MMSEG的 GO 实现
- nlp – 从字符串中提取值,并用 nlp 填充你的结构体
- nlp – 支持 LSA(Latent Semantic Analysis)的 Go 自然语言处理库
- paicehusk – Paice/Husk Stemming 算法的 Golang 实现
- petrovich – Petrovich 是一个将俄文名称转变成给定语法规则的库
- porter – 这是 Martin Porter 的波特词干算法的 C 语言实现的一个相当简单的移植
- porter2 – 非常快的 Porter 2 词干算法
- prose – 用于文本处理的库,支持分词、语音部分标记、命名实体提取等,目前仅支持英文
- RAKE.go – 快速自动关键词提取算法(RAKE)的 Go 端口
- segment – 按照Unicode标准附件#29中的描述执行 Unicode 文本分割的 Go 库
- sentences – 语句分词器:将文本转换为子句列表
- shamoji – shamoji 是用 Go 编写的文字过滤包
- snowball – 为 Go 提供的 Snowball stemmer port (cgo 封装器),提供词干提取功能 Snowball native
- spaGO – 适用于 Go 的机器学习和自然语言处理库
- stemmer – 适用于 Go 语言的 Stemmer 包,支持英文和德文
- textcat – 基于 n-gram 的文本分类包,支持 UTF-8 和原始文本
- transliterator – 提供单向的字符串翻译,支持特定语言的翻译规则
- whatlanggo – Go 自然语言检测包,支持 84 种语言和 24 种脚本(如拉丁文、西里尔文等)
- when – 自然 EN 和 RU 语言日期/时间解析器,具有可插拔规则
网络
用于处理各层网络的库
- arp – arp 包实现了 RFC 826 中描述的 ARP 协议
- buffstreams – 通过 TCP 让流式协议缓冲区数据变得简单
- canopus – CoAP 客户端/服务器的实现(RFC 7252)
- cidranger – 将 IP 地址转化为 CIDR
- dhcp6 – dhcp6 包实现了符合 RFC 3315 规范的 DHCPv6 服务器
- dns – 处理 DNS 的 Go 库
- ether – 跨平台 Go 包,用于发送和接收以太帧
- ethernet – ethernet 包实现了 IEEE 802.3 Ethernet II 帧和 IEEE 802.1Q VLAN 标签的编码和解析
- fasthttp – fasthttp 包是一个快速的 HTTP 实现,比 net/http 包快十倍
- fortio – 提供了负载测试库、命令行工具、高级 echo 服务器和 Web UI,允许指定一组每秒查询的负载、记录延迟直方图和其他有用的统计数据,并将它们绘制成图,支持 Tcp、Http、gRPC
- ftp – ftp 包实现了一个遵循 RFC 959 规范的 FTP 客户端
- gaio – Proactor 模式下高性能的 Golang 异步 IO 网络库
- gev – gev 是一个基于 Reactor 模式的、轻量级的、快速非阻塞的 TCP 网络库
- gmqtt – Gmqtt 是一个灵活的、高性能 MQTT broker 库,完整实现了 MQTT V3.1.1 协议
- gnet – gnet 是一个基于纯 Go 实现的高性能、轻量级、非阻塞、事件驱动的网络框架
- gNxI – 使用 gNMI 和 gNOI 协议的网络管理工具集合
- go-getter – 使用 URL 从多个源下载文件或者目录的 Go 库
- go-powerdns – 在 Golang 中集成PowerDNS API 绑定
- go-stun – 通过 Go 语言实现的 STUN 客户端 (遵循 RFC 3489 和 RFC 5389 规范)
- gobgp – 基于 Go 语言实现的 BGP
- gohooks – GoHooks 让发送和消费来自 Go 应用的安全 Web Hooks 变得简单,灵感来自 Spatie 的 Laravel Webhook 客户端和服务器
- golibwireshark – golibwireshark 包使用了 libwireshark 库来解码 pcap 文件并进行数据分析
- gopacket – 通过 libpcap 绑定的 packet 处理 Go 库
- gopcap – libpcap 的 Go 封装
- goshark – goshark 包使用 tshark 解码 IP 包,并创建分析包的数据结构
- gosnmp – 处理 SNMP 操作的原生 Go 库
- gotcp – 快速编写 TCP 应用的 Go 包
- grab – 管理文件下载的 Go 包
- graval – 实验性 FTP 服务器框架
- 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 框架,让构建 IM 服务器更加简单轻松
- linkio – 读取器/写入器接口的网络连接速度模拟
- llb – 这是一个非常简单但快速的代理服务器后台,可通过零内存分配和快速响应重定向到预定义域
- mdns – 基于 Golang 的简单 mDNS (Multicast DNS) 客户端/服务端实现库
- mqttPaho – Paho Go Client 提供了一个 MQTT 客户端库,用于通过 TCP、TLS 或者 WebSocket 连接到 MQTT brokers
- NFF-Go – 为云和裸机快速开发高性能网络功能的框架(原YANFF)
- packet – 通过 TCP 和 UDP 发送包,它可以在需要时缓冲消息和热交换连接
- panoptes-stream – 一个云原生分布式流媒体网络遥测 (支持 gNMI、Juniper JTI 和 Cisco MDT)
- peerdiscovery – 纯 Go 实现的、使用 UDP 组播的跨平台 Local Peer Discovery
- portproxy – 简单 TCP 代理,在 API 中添加了 CORS 支持
- publicip – publicip 包会返回你的公共 IPv4 地址(网络出口)
- quic-go – 通过纯 Go 实现 QUIC 协议
- raw – raw 包支持在设备驱动层对网络接口进行数据读写
- sftp – sftp 包实现了 https://filezilla-project.org/specs/draft-ietf-secsh-filexfer-02.txt 中描述的 SSH File Transfer Protocol
- ssh – 用于构建 SSH 服务器的更高级的API(封装了 crypto/ssh)
- sslb – 一个超级简单的负载均衡器,
- stun – RFC 5389 STUN 协议的 Go 实现
- tcp_server – 构建更快 TCP 服务器的 Go 库
- tspool – 使用 worker pool 来提升性能、保护服务器的 TCP 库
- utp – Go uTP 微传输协议实现
- vssh – 通过 SSH 协议构建网络和服务器自动化的 Go 库
- water – 简单 TUN/TAP 库
- webrtc – 纯 Go 实现的 WebRTC API
- winrm – Go WinRM客户端,可以在 Windows 机器上远程执行命令
- xtcp – TCP 服务器框架,具有同步全双工通信、优雅关闭和自定义协议等功能特性
HTTP 客户端
发送 HTTP 请求的库
- gentleman – 功能齐全、插件驱动的 HTTP 客户端库
- go-http-client – 让 HTTP 调用更简单、更轻松
- grequests – 著名的 requests 库的 Go 「克隆」实现版本
- heimdall – 增强的 HTTP 客户端,支持重试和 Hystrix 功能
- httpretry – 让默认的 Go HTTP 客户端具备重试功能
- pester – Go HTTP 客户端调用库,具备重试、后退和并发功能
- request – Go HTTP 客户端,如果你有过 axios 或 requests 库的使用经验,你会喜欢它,该库没有任何第三方依赖
- resty – 简单的 Go HTTP 和 REST 客户端,灵感来自 Ruby rest-client 库
- rq – 一个更好的 Golang stdlib HTTP 客户端接口
- sling – Sling 是一个用于创建和发送 API 请求的 Go HTTP 客户端库
OpenGL
在 Go 中使用 OpenGL 的库
- gl – 在 Go 中集成 OpenGL
- glfw – 在 Go 中集成 GLFW 3
- go-glmatrix – glMatrix 库的 Go 移植版本
- goxjs/gl – Go 跨平台 OpenGL 绑定(支持 OS X、Linux、Windows、浏览器、iOS、Android)
- goxjs/glfw – Go 跨平台 glfw 库,可用于创建 OpenGL 上下文和接收事件
- mathgl – 纯 Go 数学包,专门用于 3D 数学,灵感来自 GLM
ORM
实现 Object-Relational Mapping 和 datamapping 技术的库
- beego orm – 功能强大的 Go ORM 框架,支持 pq/mysql/sqlite3
- ent – Go 实体框架,简单但功能强大的 ORM ,可用于数据建模(Model)和查询(Query)
- go-firestorm – 适用于 Google/Firebase Cloud Firestore 的简单 ORM
- go-pg – PostgreSQL ORM,专注于 PostgreSQL 的特定功能和性能优化
- go-queryset – 100% 类型安全的 ORM,具备基于 GORM 的代码生成功能,并支持 MySQL、PostgreSQL、Sqlite3、SQL Server 等数据库
- go-sql – 一个简单的 MySQL ORM
- go-sqlbuilder – 一个灵活而强大的 SQL 字符串构建库,外加一个零配置的 ORM
- go-store – 基于 Redis 驱动的简单快速的 Go 键值对存储库
- GORM – 一个为 Golang 设计的奇妙 ORM 库,对开发者非常友好
- gormt – 将 Mysql 数据库转化为 GORM 结构体
- gorp – Go 关系型持久化,是 Go 的 ORM 库
- grimoire – Grimoire 是 Golang 的数据库访问层和验证器,支持 MySQL、PostgreSQL 和 SQLite3
- lore – 简单、轻量级的 pseudo-ORM/pseudo-struct-mapping 环境
- marlow – 从项目结构中生成 ORM,用于编译时的安全保证
- pop/soda – 数据库迁移,表创建、ORM 操作等,支持 MySQL、PostgreSQL 和 SQLite
- QBS – 一个 Go ORM,支持 Query By Struct
- 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 modules – Modules 是源代码交换和版本管理的单位,Go 命令直接支持 Modules,包括记录和解决对其他模块的依赖
包管理的官方实验性工具
包和依赖管理的非官方库
- glide – 轻松管理 Golang vendor 和 vendored 包,灵感来自 Maven、Bundler 以及 Pip
- godep – Go 依赖管理工具,godep 通过修复依赖关系来帮助构建可重用的包
- gom – Go Manager – bundle for go.
- goop – Go 简单依赖管理器,受 Bundler 启发
- gop – 在 GOPATH 之外构建和管理 Go 应用
- gopm – Go 包管理器
- govendor – Go 包管理器,用于处理标准 vendor 文件的 Go vendor 工具
- gpm – Go 依赖管理器
- johnny-deps – 使用 Git 的最小依赖版本
- modgv – 将 ‘go mod graph’ 输出转化为 Graphviz 的 DOT 语言
- mvn-golang – 该插件提供了自动加载 Golang SDK、依赖管理和在 Maven 项目基础架构中启动构建环境的方法
- nut – Vendor Go 依赖
- VenGO – 创建和管理可导出的隔离的 Go 虚拟环境
性能
- jaeger – 分布式追踪系统
- pixie – 通过 eBPF 对 Go 应用进行无设备追踪
- profile – 为 Go 提供简单的分析支持包
- statsviz – 实时可视化 Go 应用程序运行时的统计数据
- tracer – 简单、轻量级追踪
查询语言
- api-fu – 全面的 GraphQL 实现
- dasel – 在命令行中使用选择器查询和更新数据结构,类似于 jq/yq,但支持 JSON、YAML、TOML 和 XML,运行时零依赖
- gojsonq – 一个用于查询 JSON 数据的简单 Go 包
- graphql – GraphQL 解析器 + 工具集
- graphql – 注重易用性的 GraphQL 服务器
- graphql-go – 适用于 Go 的 GraphQL 实现
- gws – Apollos 的 GraphQL over Websocket 客户端和服务器实现
- jsonql – JSON 查询表达式库
- jsonslice – 带有高级过滤器的 Jsonpath 查询
- rql – REST API 资源查询语言
- rqp – REST API 查询解析、过滤、验证,支持在查询中直接使用
AND
、OR
操作符 - straf – 将 Golang 结构体轻松地转换为 GraphQL 对象
资源嵌入
- esc – 将文件嵌入到 Go 程序中,并为其提供 http.FileSystem 接口
- fileb0x – 在 Go 中嵌入文件的简单工具,注重”自定义”和易用性
- go-embed – 生成将资源文件嵌入到库或可执行文件中的 Go 代码
- go-resources – 不花哨的 Go 资源嵌入
- go.rice – go.rice 是一个让 HTML、JS、CSS、图片和模板等资源使用更简单的 Go 包
- mule – 使用
go generate
创建单文件二进制文件,将外部资源如图片、电影……嵌入到 Go 源码中 - packr – 将静态文件嵌入 Go 二进制文件的简单实现
- statics – 将静态资源嵌入到 Go 文件中,以便让单文件二进制编译 + http.FileSystem + symlinks 可以整合到一起
- statik – 嵌入静态文件到 Go 可执行文件
- templify – 嵌入外部模板文件到 Go 代码以便创建单个二进制文件
- vfsgen – 生成一个静态地实现了给定虚拟文件系统的 vfsdata.go 文件
科学和数据分析
科学计算和数据分析库
- assocentity – assocentity 包可以返回单词到给定实体的平均距离
- bradleyterry – 提供 Bradley-Terry 模型用于配对比较
- calendarheatmap – 受 Github 贡献活动启发,通过纯 Go 实现日历热图
- chart – 适用于 Go 的简单图表绘制库,支持多种图形类型
- dataframe-go – 用于机器学习和统计的数据框架(类似于 pandas)
- decimal – decimal 包实现了实现任意精度十进制浮点运算
- evaler – 简单的浮点算术表达式计算器
- ewma – 指数加权移动均线
- geom – Golang 2D 几何
- go-dsp – Go 数字信号处理
- go-gt – 用 Go 语言编写的图论算法
- goent – 基于 Go 实现熵测量
- gohistogram – 数据流的近似直方图
- gonum – Gonum 是一套用于 Go 编程语言的数值库,包含矩阵、统计、优化等
- gonum/plot – gonum/plot 提供了一个在 Go 中构建和绘制小区的 API
- goraph – 纯 Go 图论库(数据结构、算法可视化)
- gosl – Go科学库,包含线性代数、FFT、几何、NURBS、数值方法、概率、优化、微分方程等
- GoStats – GoStats 是一个开源的 Golang 数学统计库,主要用于机器学习领域,它涵盖了大部分的统计测量函数
- graph – 基础图形算法库
- ode – 普通微分方程(ODE)求解器,支持扩展状态和基于通道的迭代停止条件
- orb – 支持剪贴、GeoJSON 和 Mapbox Vector Tile 的 2D 几何类型
- pagerank – 在 Go 中实现的加权 PageRank 算法
- piecewiselinear – 微型线性插值库
- PiHex – 十六进制数 Pi 的 Bailey-Borwein-Plouffe 算法实现
- rootfinding – 根查找算法库,用于查找二次函数的根
- sparse – Go 稀疏矩阵格式,用于支持科学和机器学习应用的线性代数,与 gonum 矩阵库兼容
- stats – 包含 Golang 标准库中缺少的常用函数的统计包
- streamtools – 用于处理数据流的通用图形工具
- TextRank – 在 Golang 中实现的 TextRank,具有可扩展的特征(总结、加权、短语提取)和多线程(goroutine)支持
- triangolatte – 2D 三角函数库,允许将线条和多边形(都是基于点)翻译成 GPU 语言
安全
让你的应用更加安全的库
- acmetool – 带自动续订的 ACME (Let’s Encrypt) 客户端工具
- acra – 网络加密代理,以保护基于数据库的应用程序免受数据泄漏:强选择性加密,防止SQL注入,入侵检测系统
- argon2-hashing – Go argon2包的轻量级封装,与 Go 标准库 Bcrypt 和 simple-scrypt 包关系密切
- argon2pw – Argon2 密码哈希生成与恒定时间密码比较
- autocert – 自动提供 Let’s Encrypt 证书并启动一个 TLS 服务器
- BadActor – 受 fail2ban 启发实现的基于内存的、应用驱动的应用「守卫」,旨在提高系统嗅探和攻击者的成本
- Cameradar – 用于远程入侵监控摄像机 RTSP 流的工具和库
- certificates – 一个用于生成 TLS 证书的工具
- firewalld-rest – 一个用于动态更新 Linux 服务器上 Firewalld 规则的 REST 应用
- go-generate-password – 可以在客户端或作为一个库使用的密码生成器
- go-password-validator – 基于原始加密熵值的密码校验器
- go-yara – YARA 的 Go 实现,恶意软件研究人员(以及所有其他人)的「模式匹配瑞士军刀」
- goArgonPass – Argon2 密码哈希和验证,旨在与现有的 Python 和 PHP 实现兼容
- goSecretBoxPassword – 安全地对密码进行哈希和加密
- Interpol – 基于规则的数据生成器,用于模糊测试和渗透测试
- lego – 纯 Go ACME 客户端库和 CLI 工具(用于 Let’s Encrypt)
- memguard – 用于处理内存中敏感值的纯 Go 库
- nacl – NaCL 系列 API 的 Go 实现
- optimus-go – 使用 Knuth 算法进行 ID 散列和混淆
- passlib – 面向未来的密码哈希库
- secure – Go HTTP 安全中间件
- secureio – 一个基于 XChaCha20-poly1305、ECDH 和 ED25519 的
io.ReadWriteCloser
密钥交换+认证+加密包装和复用器 - simple-scrypt – Scrypt 软件包有一个简单、直观的 API,并内置自动成本校准
- ssh-vault – 使用 SSH 密钥加密/解密
- sslmgr – 通过对 acme/autocert 进行高级封装让 SSL 证书变得简单
- themis – 高级加密库,用于解决典型的数据安全任务(安全数据存储、安全信息传递、零知识证明认证),支持 14 种语言,最适合多平台应用程序
序列化
二进制序列化库和工具
- asn1 – Asn.1 BER 和 DER 编码库
- bambam – Go Cap’n Proto schemas 生成器
- bel – 通过 Go结构体/接口生成 TypeScript 接口,对 JSON RPC 很有用
- binstruct – 用于将数据映射到结构体的 Golang 二进制解码器
- cbor – 小巧、安全、简单的 CBOR 编解码库
- colfer – Colfer二进制格式代码生成
- csvutil – 高性能、约定俗成的 CSV 记录编解码实现
- elastic – 在运行时跨不同类型转换切片、字典或任何其他未知的值
- fixedwidth – 固定宽度的文本格式化(支持UTF-8)
- fwencoder – 固定宽度的文件解析器(编解码)
- go-capnproto – Go Cap’n Proto 库和解析器
- go-codec – 支持 msgpack、cbor 和 json 的高性能、功能丰富、约定俗成的编解码和 rpc 库,支持基于运行时间的 OR 代码生成
- go-lctree – 提供一个 CLI 和基元来序列化和反序列化 LeetCode 二进制树
- gogoprotobuf – 带小工具的 Protocol Buffers for Go
- goprotobuf – 以库和协议编译器插件的形式支持 Go 的 Google protocol buffers
- jsoniter – 高性能的、100%兼容的
encoding/json
库替代品 - mapstructure – 用于将通用字典值解码为原生 Go 结构体的 Go 库
- php_session_decoder – 用于处理 PHP 会话格式和 PHP Serialize/Unserialize 函数的 Go 库
- pletter – 以标准方式为消息broker包装协议消息
- structomap – 从静态结构体生成动态字典
服务器应用
- algernon – HTTP/2 Web 服务器,内置对 Lua、Markdown、GCSS 和 Amber 的支持
- Caddy – Caddy 是一个易于配置和使用的 HTTP/2 Web 服务器
- consul – Consul 是一个用于服务发现、监控和配置的工具
- devd – 为开发者提供的本地网络服务器
- discovery – 用于弹性中间层负载平衡和故障转移的注册表
- dudeldu – 一个简单的 SOUTcast 服务器
- etcd – 用于共享配置和服务发现的高可用键值对存储
- Fider – Fider 是一个收集和组织客户反馈的开放平台
- Flagr – Flagr 是一个开源的功能标记和 A/B 测试服务
- flipt – 一个用 Go 和 Vue.js 编写的本地功能切换解决方案
- go-feature-flag – 一个功能切换解决方案,后端只有一个 YAML 文件(S3、GitHub、HTTP、本地文件…),不需要安装服务器,只需在中央系统中添加一个文件并引用它
- go-proxy-cache – 支持缓存的简单反向代理,用 Go 编写,使用 Redis 作为存储
- jackal – 基于 Go 编写的 XMPP 服务器
- lets-proxy2 – 处理 HTTPS 的反向代理,在基于 let-encrypt 的 fly 中发行证书
- minio – Minio 是一个分布式对象存储服务器
- nginx-prometheus – 将 Nginx 日志解析并导出到 Prometheus
- nsq – 一个实时分布式消息平台
- protoxy – 一个代理服务器,将 JSON 请求体转换为 Protocol Buffers
- psql-streamer – 从 PostgreSQL 到 Kafka 的数据库事件流
- riemann-relay – 中继器实现,用于负载均衡 Riemann 事件或将其转换为 Carbon
- RoadRunner – 高性能的 PHP 应用服务器、负载均衡器和进程管理器
- SFTPGo – 功能齐全、高度可配置的 SFTP 服务器,可选择支持 FTP/S 和 WebDAV。它可以为本地文件系统和云存储后端提供服务,如 S3 和Google Cloud Storage
- simple-jwt-provider – 简单轻量级的 JWT 服务提供者,支持登录、密码重置(通过邮件)和用户管理
- Trickster – HTTP 反向代理缓存和时间序列加速器
流处理
流处理和被动式编程库、工具
- go-streams – Go 流处理库
- machine – 用于编写和生成具有内置指标和追踪功能的 Go 流处理库
- stream – Go Stream,类似 Java 8 Stream,支持 Filter/Map/FlatMap/Peek/Sort/ForEach/Reduce 等操作
模板引擎
模板化和词典化的库和工具
- ace – Ace 是一个 Go HTML 模板引擎,灵感来自 Slim 和 Jade,Ace 是 Gold 的改进版
- amber – Amber 是一个优雅的 Go 模板引擎,灵感来自 HAML 和 Jade
- damsel – 标记语言的特点是通过 css-selectors 勾勒出 html,可通过 html/template 和其他方式扩展
- ego – 轻量级模板语言,可以让你在 Go 中编写模板,模板会被翻译成 Go 语言并进行编译
- extemplate – 封装了 html/template,允许基于文件的模板继承
- fasttemplate – 简单快速的模板引擎,替换模板占位符的速度比 text/template 快10倍
- gofpdf – PDF 文档生成器,对文本、绘图和图像有高水平的支持
- gospin – 文章编织和 spintax/spinning 语法引擎,对 A/B、测试文本/文章片段以及创造更自然的对话很有用
- goview – Goview 是一个基于 golang html/template 的轻量级、简约、基于惯用语的模板库,用于构建 Go Web 应用
- hero – Hero是一个方便、快速、强大的 Go 模板引擎
- jet – Jet 模板引擎
- kasia.go – HTML 和其他文本文件模板系统的 Go 实现
- liquid – Shopify Liquid 模板的 Go 实现
- maroto – 通过 maroto 创建 PDF,Maroto 的灵感来自于 Bootstrap 并使用 gofpdf,快速且简单
- mustache – Mustache 模板语言的 Go 实现
- pongo2 – Go 实现的类似 Django 的模板引擎
- quicktemplate – 快速、强大而又易于使用的模板引擎,将模板转换为 Go 代码,然后进行编译
- raymond – 在 Go 中完整实现 Handlebars
- Razor – 适用于 Golang 的 Razor 视图引擎
- Soy – Go 的闭包模板(又称 Soy 模板),遵循官方规范
- sprig – 为 Go 模板提供有用的模板函数
- velvet – 在 Go 中完整实现 Handlebars
测试
测试代码库和生成测试数据的库
测试框架
- apitest – Simple and extensible behavioural testing library for REST based services or HTTP handlers that supports mocking external http calls and rendering of sequence diagrams.
- assert – Basic Assertion Library used along side native go testing, with building blocks for custom assertions.
- badio – Extensions to Go’s
testing/iotest
package. - baloo – Expressive and versatile end-to-end HTTP API testing made easy.
- biff – Bifurcation testing framework, BDD compatible.
- charlatan – Tool to generate fake interface implementations for tests.
- commander – Tool for testing cli applications on windows, linux and osx.
- covergates – Self-hosted code coverage report review and management service.
- cupaloy – Simple snapshot testing addon for your test framework.
- dbcleaner – Clean database for testing purpose, inspired by
database_cleaner
in Ruby. - dsunit – Datastore testing for SQL, NoSQL, structured files.
- embedded-postgres – Run a real Postgres database locally on Linux, OSX or Windows as part of another Go application or test.
- endly – Declarative end to end functional testing.
- flute – HTTP client testing framework.
- frisby – REST API testing framework.
- ginkgo – BDD Testing Framework for Go.
- gnomock – integration testing with real dependencies (database, cache, even Kubernetes or AWS) running in Docker, without mocks.
- go-carpet – Tool for viewing test coverage in terminal.
- go-cmp – Package for comparing Go values in tests.
- go-hit – Hit is an http integration test framework written in golang.
- go-mutesting – Mutation testing for Go source code.
- go-testdeep – Extremely flexible golang deep comparison, extends the go testing package.
- go-vcr – Record and replay your HTTP interactions for fast, deterministic and accurate tests.
- goblin – Mocha like testing framework fo Go.
- goc – Goc is a comprehensive coverage testing system for The Go Programming Language.
- gocheck – More advanced testing framework alternative to gotest.
- GoConvey – BDD-style framework with web UI and live reload.
- gocrest – Composable hamcrest-like matchers for Go assertions.
- godog – Cucumber or Behat like BDD framework for Go.
- gofight – API Handler Testing for Golang Router framework.
- gogiven – YATSPEC-like BDD testing framework for Go.
- gomatch – library created for testing JSON against patterns.
- gomega – Rspec like matcher/assertion library.
- GoSpec – BDD-style testing framework for the Go programming language.
- gospecify – This provides a BDD syntax for testing your Go code. It should be familiar to anybody who has used libraries such as rspec.
- gosuite – Brings lightweight test suites with setup/teardown facilities to
testing
by leveraging Go1.7’s Subtests. - gotest.tools – A collection of packages to augment the go testing package and support common patterns.
- Hamcrest – fluent framework for declarative Matcher objects that, when applied to input values, produce self-describing results.
- httpexpect – Concise, declarative, and easy to use end-to-end HTTP and REST API testing.
- jsonassert – Package for verifying that your JSON payloads are serialized correctly.
- restit – Go micro framework to help writing RESTful API integration test.
- schema – Quick and easy expression matching for JSON schemas used in requests and responses.
- stop-and-go – Testing helper for concurrency.
- testcase – Idiomatic testing framework for Behavior Driven Development.
- testfixtures – A helper for Rails’ like test fixtures to test database applications.
- Testify – Sacred extension to the standard go testing package.
- testmd – Convert markdown snippets into testable go code.
- testsql – Generate test data from SQL files before testing and clear it after finished.
- trial – Quick and easy extendable assertions without introducing much boilerplate.
- Tt – Simple and colorful test tools.
- wstest – Websocket client for unit-testing a websocket http.Handler.
模拟
- counterfeiter – Tool for generating self-contained mock objects.
- go-localstack – Tool for using localstack in AWS testing.
- go-sqlmock – Mock SQL driver for testing database interactions.
- go-txdb – Single transaction based database driver mainly for testing purposes.
- gock – Versatile HTTP mocking made easy.
- gomock – Mocking framework for the Go programming language.
- govcr – HTTP mock for Golang: record and replay HTTP interactions for offline testing.
- hoverfly – HTTP(S) proxy for recording and simulating REST/SOAP APIs with extensible middleware and easy-to-use CLI.
- httpmock – Easy mocking of HTTP responses from external resources.
- minimock – Mock generator for Go interfaces.
- mockhttp – Mock object for Go http.ResponseWriter.
- mockit – Allows functions and method easy mocking, without defining new types; it’s similar to Mockito for Java.
- timex – A test-friendly replacement for the native
time
package.
模糊化和增量调试/减少/缩小
- go-fuzz – Randomized testing system.
- gofuzz – Library for populating go objects with random values.
- Tavor – Generic fuzzing and delta-debugging framework.
Selenium 和浏览器控制工具
- cdp – Type-safe bindings for the Chrome Debugging Protocol that can be used with browsers or other debug targets that implement it.
- chromedp – a way to drive/test Chrome, Safari, Edge, Android Webviews, and other browsers supporting the Chrome Debugging Protocol.
- ggr – a lightweight server that routes and proxies Selenium WebDriver requests to multiple Selenium hubs.
- playwright-go – browser automation library to control Chromium, Firefox and WebKit with a single API.
- rod – A Devtools driver to make web automation and scraping easy.
- selenoid – alternative Selenium hub server that launches browsers within containers.
注入失败
- failpoint – An implementation of failpoints for Golang.
文本处理
文本解析和处理库
指定格式
- align – A general purpose application that aligns text.
- allot – Placeholder and wildcard text parsing for CLI tools and bots.
- bbConvert – Converts bbCode to HTML that allows you to add support for custom bbCode tags.
- blackfriday – Markdown processor in Go.
- bluemonday – HTML Sanitizer.
- codetree – Parses indented code (python, pixy, scarlet, etc.) and returns a tree structure.
- colly – Fast and Elegant Scraping Framework for Gophers.
- commonregex – A collection of common regular expressions for Go.
- dataflowkit – Web scraping Framework to turn websites into structured data.
- did – DID (Decentralized Identifiers) Parser and Stringer in Go.
- doi – Document object identifier (doi) parser in Go.
- editorconfig-core-go – Editorconfig file parser and manipulator for Go.
- enca – Minimal cgo bindings for libenca.
- encdec – Package provides a generic interface to encoders and decodersa.
- genex – Count and expand Regular Expressions into all matching Strings.
- github_flavored_markdown – GitHub Flavored Markdown renderer (using blackfriday) with fenced code block highlighting, clickable header anchor links.
- go-fixedwidth – Fixed-width text formatting (encoder/decoder with reflection).
- go-humanize – Formatters for time, numbers, and memory size to human readable format.
- go-nmea – NMEA parser library for the Go language.
- go-runewidth – Functions to get fixed width of the character or string.
- go-slugify – Make pretty slug with multiple languages support.
- go-toml – Go library for the TOML format with query support and handy cli tools.
- go-vcard – Parse and format vCard.
- go-zero-width – Zero-width character detection and removal for Go.
- gofeed – Parse RSS and Atom feeds in Go.
- gographviz – Parses the Graphviz DOT language.
- gommon/bytes – Format bytes to string.
- gonameparts – Parses human names into individual name parts.
- goq – Declarative unmarshaling of HTML using struct tags with jQuery syntax (uses GoQuery).
- GoQuery – GoQuery brings a syntax and a set of features similar to jQuery to the Go language.
- goregen – Library for generating random strings from regular expressions.
- goribot – A simple golang spider/scraping framework,build a spider in 3 lines.
- gotext – GNU gettext utilities for Go.
- guesslanguage – Functions to determine the natural language of a unicode text.
- html-to-markdown – Convert HTML to Markdown. Even works with entire websites and can be extended through rules.
- htmlquery – An XPath query package for HTML, lets you extract data or evaluate from HTML documents by an XPath expression.
- inject – Package inject provides a reflect based injector.
- ltsv – High performance LTSV (Labeled Tab Separated Value) reader for Go.
- mxj – Encode / decode XML as JSON or map[string]interface{}; extract values with dot-notation paths and wildcards. Replaces x2j and j2x packages.
- omniparser – A versatile ETL library that parses text input (CSV/txt/JSON/XML/EDI/X12/EDIFACT/etc) in streaming fashion and transforms data into JSON output using data-driven schema.
- pagser – Pagser is a simple, extensible, configurable parse and deserialize html page to struct based on goquery and struct tags for golang crawler.
- podcast – iTunes Compliant and RSS 2.0 Podcast Generator in Golang
- sdp – SDP: Session Description Protocol [RFC 4566].
- sh – Shell parser and formatter.
- slug – URL-friendly slugify with multiple languages support.
- Slugify – Go slugify application that handles string.
- syndfeed – A syndication feed for Atom 1.0 and RSS 2.0.
- toml – TOML configuration format (encoder/decoder with reflection).
实用工具
- gofuckyourself – A sanitization-based swear filter for Go.
- gotabulate – Easily pretty-print your tabular data with Go.
- kace – Common case conversions covering common initialisms.
- parseargs-go – string argument parser that understands quotes and backslashes.
- parth – URL path segmentation parsing.
- radix – fast string sorting algorithm.
- regroup – Match regex expression named groups into go struct using struct tags and automatic parsing.
- Tagify – Produces a set of tags from given source.
- textwrap – Implementation of
textwrap
module from Python. - TySug – Alternative suggestions with respect to keyboard layouts.
- xj2go – Convert xml or json to go struct.
- xurls – Extract urls from text.
第三方 APIs
访问第三方 APIs 的库
- airtable – Go client library for the Airtable API.
- amazon-product-advertising-api – Go Client Library for Amazon Product Advertising API.
- anaconda – Go client library for the Twitter 1.1 API.
- aws-sdk-go – The official AWS SDK for the Go programming language.
- brewerydb – Go library for accessing the BreweryDB API.
- cachet – Go client library for Cachet (open source status page system).
- circleci – Go client library for interacting with CircleCI’s API.
- clarifai – Go client library for interfacing with the Clarifai API.
- codeship-go – Go client library for interacting with Codeship’s API v2.
- coinpaprika-go – Go client library for interacting with Coinpaprika’s API.
- device-check-go – Go client library for interacting with iOS DeviceCheck API v1.
- discordgo – Go bindings for the Discord Chat API.
- ethrpc – Go bindings for Ethereum JSON RPC API.
- facebook – Go Library that supports the Facebook Graph API.
- fcm – Go library for Firebase Cloud Messaging.
- gads – Google Adwords Unofficial API.
- gami – Go library for Asterisk Manager Interface.
- gcm – Go library for Google Cloud Messaging.
- geo-golang – Go Library to access Google Maps, MapQuest, Nominatim, OpenCage, Bing, Mapbox, and OpenStreetMap geocoding / reverse geocoding APIs.
- github – Go library for accessing the GitHub REST API v3.
- githubql – Go library for accessing the GitHub GraphQL API v4.
- go-aws-news – Go application and library to fetch what’s new from AWS.
- go-chronos – Go library for interacting with the Chronos Job Scheduler
- go-hacknews – Tiny Go client for HackerNews API.
- go-here – Go client library around the HERE location based APIs.
- go-imgur – Go client library for imgur
- go-jira – Go client library for Atlassian JIRA
- go-marathon – Go library for interacting with Mesosphere’s Marathon PAAS.
- go-myanimelist – Go client library for accessing the MyAnimeList API.
- go-postman-collection – Go module to work with Postman Collections (compatible with Insomnia).
- go-sophos – Go client library for the Sophos UTM REST API with zero dependencies.
- go-sptrans – Go client library for the SPTrans Olho Vivo API.
- go-telegraph – Telegraph publishing platform API client.
- go-trending – Go library for accessing trending repositories and developers at Github.
- go-twitch – Go client for interacting with the Twitch v3 API.
- go-twitter – Go client library for the Twitter v1.1 APIs.
- go-unsplash – Go client library for the Unsplash.com API.
- go-xkcd – Go client for the xkcd API.
- gogtrends – Google Trends Unofficial API.
- golang-tmdb – Golang wrapper for The Movie Database API v3.
- golyrics – Golyrics is a Go library to fetch music lyrics data from the Wikia website.
- gomalshare – Go library MalShare API malshare.com
- GoMusicBrainz – Go MusicBrainz WS2 client library.
- google – Auto-generated Google APIs for Go.
- google-analytics – Simple wrapper for easy google analytics reporting.
- google-cloud – Google Cloud APIs Go Client Library.
- google-email-audit-api – Go client library for Google G Suite Email Audit API.
- google-play-scraper – Get data from Google Play Store.
- gopaapi5 – Go Client Library for Amazon Product Advertising API 5.0.
- gosip – Go client library SharePoint API.
- gostorm – GoStorm is a Go library that implements the communications protocol required to write Storm spouts and Bolts in Go that communicate with the Storm shells.
- hipchat – This project implements a golang client library for the Hipchat API.
- hipchat (xmpp) – A golang package to communicate with HipChat over XMPP.
- igdb – Go client for the Internet Game Database API.
- kanka – Go client for the Kanka API.
- lastpass-go – Go client library for the LastPass API.
- libgoffi – Library adapter toolbox for native libffi integration
- Medium – Golang SDK for Medium’s OAuth2 API.
- megos – Client library for accessing an Apache Mesos cluster.
- minio-go – Minio Go Library for Amazon S3 compatible cloud storage.
- mixpanel – Mixpanel is a library for tracking events and sending Mixpanel profile updates to Mixpanel from your go applications.
- patreon-go – Go library for Patreon API.
- paypal – Wrapper for PayPal payment API.
- playlyfe – The Playlyfe Rest API Go SDK.
- pushover – Go wrapper for the Pushover API.
- rawg-sdk-go – Go library for the RAWG Video Games Database API
- rrdaclient – Go Library to access statdns.com API, which is in turn RRDA API. DNS Queries over HTTP.
- shopify – Go Library to make CRUD request to the Shopify API.
- simples3 – Simple no frills AWS S3 Library using REST with V4 Signing written in Go.
- slack – Slack API in Go.
- smite – Go package to wraps access to the Smite game API.
- spotify – Go Library to access Spotify WEB API.
- steam – Go Library to interact with Steam game servers.
- stripe – Go client for the Stripe API.
- textbelt – Go client for the textbelt.com txt messaging API.
- translate – Go online translation package.
- Trello – Go wrapper for the Trello API.
- TripAdvisor – Go wrapper for the TripAdvisor API.
- tumblr – Go wrapper for the Tumblr v2 API.
- twitter-scraper – Scrape the Twitter Frontend API without authentication and limits.
- uptimerobot – Go wrapper and command-line client for the Uptime Robot v2 API.
- vl-go – Go client library around the VerifID identity verification layer API.
- webhooks – Webhook receiver for GitHub and Bitbucket.
- wit-go – Go client for wit.ai HTTP API.
- ynab – Go wrapper for the YNAB API.
- zooz – Go client for the Zooz API.
实用工具
让你工作生活更轻松的通用实用工具集
- apm – Process manager for Golang applications with an HTTP API.
- backscanner – A scanner similar to bufio.Scanner, but it reads and returns lines in reverse order, starting at a given position and going backward.
- beyond – The Go tool that will drive you to the AOP world!
- blank – Verify or remove blanks and whitespace from strings.
- bleep – Perform any number of actions on any set of OS signals in Go.
- boilr – Blazingly fast CLI tool for creating projects from boilerplate templates.
- changie – Automated changelog tool for preparing releases with lots of customization options.
- chyle – Changelog generator using a git repository with multiple configuration possibilities.
- circuit – An efficient and feature complete Hystrix like Go implementation of the circuit breaker pattern.
- circuitbreaker – Circuit Breakers in Go.
- clockwork – A simple fake clock for golang.
- cmd – Library for executing shell commands on osx, windows and linux.
- command – Command pattern for Go with thread safe serial and parallel dispatcher.
- copy – Package for fast copying structs of different types.
- copy-pasta – Universal multi-workstation clipboard that uses S3 like backend for the storage.
- countries – Full implementation of ISO-3166-1, ISO-4217, ITU-T E.164, Unicode CLDR and IANA ccTLD standarts.
- create-go-app – A powerful CLI for create a new production-ready project with backend (Golang), frontend (JavaScript, TypeScript) & deploy automation (Ansible, Docker) by running one command.
- ctop – Top-like interface (e.g. htop) for container metrics.
- ctxutil – A collection of utility functions for contexts.
- dbt – A framework for running self-updating signed binaries from a central, trusted repository.
- Death – Managing go application shutdown with signals.
- Deepcopier – Simple struct copying for Go.
- delve – Go debugger.
- dlog – Compile-time controlled logger to make your release smaller without removing debug calls.
- equalizer – Quota manager and rate limiter collection for Go.
- ergo – The management of multiple local services running over different ports made easy.
- evaluator – Evaluate an expression dynamicly based on s-expression. It’s simple and easy to extend.
- filetype – Small package to infer the file type checking the magic numbers signature.
- filler – small utility to fill structs using “fill” tag.
- filter – provide filtering, sanitizing, and conversion of Go data.
- fzf – Command-line fuzzy finder written in Go.
- generate – runs go generate recursively on a specified path or environment variable and can filter by regex.
- ghokin – Parallelized formatter with no external dependencies for gherkin (cucumber, behat…).
- git-time-metric – Simple, seamless, lightweight time tracking for Git.
- go-astitodo – Parse TODOs in your GO code.
- go-bind-plugin – go:generate tool for wrapping symbols exported by golang plugins (1.8 only).
- go-bsdiff – Pure Go bsdiff and bspatch libraries and CLI tools.
- go-convert – Package go-convert enbles you to convert a value into another type.
- go-countries – Lightweight lookup over ISO-3166 codes.
- go-dry – DRY (don’t repeat yourself) package for Go.
- go-funk – Modern Go utility library which provides helpers (map, find, contains, filter, chunk, reverse, …).
- go-health – Health package simplifies the way you add health check to your services.
- go-httpheader – Go library for encoding structs into Header fields.
- go-lock – go-lock is a lock library implementing read-write mutex and read-write trylock without starvation.
- go-problemdetails – Go package for working with Problem Details.
- go-rate – Timed rate limiter for Go.
- go-safe – Panic-safe sandbox.
- go-sitemap-generator – XML Sitemap generator written in Go.
- go-trigger – Go-lang global event triggerer, Register Events with an id and trigger the event from anywhere from your project.
- goback – Go simple exponential backoff package.
- goctx – Get your context value with high performance.
- godaemon – Utility to write daemons.
- godropbox – Common libraries for writing Go services/applications from Dropbox.
- gohper – Various tools/modules help for development.
- golarm – Fire alarms with system events.
- golog – Easy and lightweight CLI tool to time track your tasks.
- gopencils – Small and simple package to easily consume REST APIs.
- goplaceholder – a small golang lib to generate placeholder images.
- goreadability – Webpage summary extractor using Facebook Open Graph and arc90’s readability.
- goreleaser – Deliver Go binaries as fast and easily as possible.
- goreporter – Golang tool that does static analysis, unit testing, code review and generate code quality report.
- goseaweedfs – SeaweedFS client library with almost full features.
- gostrutils – Collections of string manipulation and conversion functions.
- gotenv – Load environment variables from
.env
or anyio.Reader
in Go. - gpath – Library to simplify access struct fields with Go’s expression in reflection.
- gubrak – Golang utility library with syntactic sugar. It’s like lodash, but for golang.
- handy – Many utilities and helpers like string handlers/formatters and validators.
- hostctl – A CLI tool to manage /etc/hosts with easy commands.
- htcat – Parallel and Pipelined HTTP GET Utility.
- hub – wrap git commands with additional functionality to interact with github from the terminal.
- hystrix-go – Implements Hystrix patterns of programmer-defined fallbacks aka circuit breaker.
- immortal – *nix cross-platform (OS agnostic) supervisor.
- intrinsic – Use x86 SIMD without writing any assembly code.
- jsend – JSend’s implementation writen in Go.
- jump – Jump helps you navigate faster by learning your habits.
- koazee – Library inspired in Lazy evaluation and functional programming that takes the hassle out of working with arrays.
- lets-go – Go module that provides common utilities for Cloud Native REST API development. Also contains AWS Specific utilities.
- limiters – Rate limiters for distributed applications in Golang with configurable back-ends and distributed locks.
- lrserver – LiveReload server for Go.
- mc – Minio Client provides minimal tools to work with Amazon S3 compatible cloud storage and filesystems.
- mergo – Helper to merge structs and maps in Golang. Useful for configuration default values, avoiding messy if-statements.
- mimemagic – Pure Go ultra performant MIME sniffing library/utility.
- mimesniffer – A MIME type sniffer for Go.
- mimetype – Package for MIME type detection based on magic numbers.
- minify – Fast minifiers for HTML, CSS, JS, XML, JSON and SVG file formats.
- minquery – MongoDB / mgo.v2 query that supports efficient pagination (cursors to continue listing documents where we left off).
- moldova – Utility for generating random data based on an input template.
- mole – cli app to easily create ssh tunnels.
- mongo-go-pagination – Mongodb Pagination for official mongodb/mongo-go-driver package which supports both normal queries and Aggregation pipelines.
- mssqlx – Database client library, proxy for any master slave, master master structures. Lightweight and auto balancing in mind.
- multitick – Multiplexor for aligned tickers.
- myhttp – Simple API to make HTTP GET requests with timeout support.
- netbug – Easy remote profiling of your services.
- nfdump – Read nfdump netflow files.
- nostromo – CLI for building powerful aliases.
- okrun – go run error steamroller.
- olaf – Twitter Snowflake implemented in Go.
- onecache – Caching library with support for multiple backend stores (Redis, Memcached, filesystem etc).
- panicparse – Groups similar goroutines and colorizes stack dump.
- pattern-match – Pattern matching libray.
- peco – Simplistic interactive filtering tool.
- pgo – Convenient functions for PHP community.
- pm – Process (i.e. goroutine) manager with an HTTP API.
- ptr – Package that provide functions for simplified creation of pointers from constants of basic types.
- rclient – Readable, flexible, simple-to-use client for REST APIs.
- repeat – Go implementation of different backoff strategies useful for retrying operations and heartbeating.
- request – Go HTTP Requests for Humans™.
- rerate – Redis-based rate counter and rate limiter for Go.
- rerun – Recompiling and rerunning go apps when source changes.
- rest-go – A package that provide many helpful methods for working with rest api.
- retry – The most advanced functional mechanism to perform actions repetitively until successful.
- retry – A simple but highly configurable retry package for Go.
- retry – Simple and easy retry mechanism package for Go.
- retry – A pretty simple library to ensure your work to be done.
- retry-go – Retrying made simple and easy for golang.
- robustly – Runs functions resiliently, catching and restarting panics.
- scan – Scan golang
sql.Rows
directly to structs, slices, or primitive types. - scany – Library for scanning data from a database into Go structs and more.
- serve – A static http server anywhere you need.
- shutdown – App shutdown hooks for
os.Signal
handling. - silk – Read silk netflow files.
- slice – Type-safe functions for common Go slice operations.
- sliceconv – Slice conversion between primitive types.
- slicer – Makes working with slices easier.
- sorty – Fast Concurrent / Parallel Sorting.
- spinner – Go package to easily provide a terminal spinner with options.
- sqlx – provides a set of extensions on top of the excellent built-in database/sql package.
- statiks – Fast, zero-configuration, static HTTP filer server.
- Storm – Simple and powerful toolkit for BoltDB.
- structs – Implement simple functions to manipulate structs.
- tik – Simple and easy timing wheel package for Go.
- tome – Tome was designed to paginate simple RESTful APIs.
- toolbox – Slice, map, multimap, struct, function, data conversion utilities. Service router, macro evaluator, tokenizer.
- ugo – ugo is slice toolbox with concise syntax for Go.
- UNIS – Common Architecture™ for String Utilities in Go.
- usql – usql is a universal command-line interface for SQL databases.
- util – Collection of useful utility functions. (strings, concurrency, manipulations, …).
- wuzz – Interactive cli tool for HTTP inspection.
- xferspdy – Xferspdy provides binary diff and patch library in golang.
UUID
UUID 处理库
- goid – Generate and Parse RFC4122 compliant V4 UUIDs.
- gouid – Generate cryptographically secure random string IDs with just one allocation.
- nanoid – A tiny and efficient Go unique string ID generator.
- sno – Compact, sortable and fast unique IDs with embedded metadata.
- ulid – Go implementation of ULID (Universally Unique Lexicographically Sortable Identifier).
- uniq – No hassle safe, fast unique identifiers with commands.
- uuid – Generate, encode, and decode UUIDs v1 with fast or cryptographic-quality random node identifier.
- uuid – Implementation of Universally Unique Identifier (UUID). Supports both creation and parsing of UUIDs. Actively maintained fork of satori uuid.
- uuid – Go package for UUIDs based on RFC 4122 and DCE 1.1: Authentication and Security Services.
- wuid – An extremely fast unique number generator, 10-135 times faster than UUID.
验证
验证库
- checkdigit – Provide check digit algorithms (Luhn, Verhoeff, Damm) and calculators (ISBN, EAN, JAN, UPC, etc.).
- gody – :balloon: A lightweight struct validator for Go.
- govalid – Fast, tag-based validation for structs.
- govalidator – Validators and sanitizers for strings, numerics, slices and structs.
- govalidator – Validate Golang request data with simple rules. Highly inspired by Laravel’s request validation.
- jio – jio is a json schema validator similar to joi.
- ozzo-validation – Supports validation of various data types (structs, strings, maps, slices, etc.) with configurable and extensible validation rules specified in usual code constructs instead of struct tags.
- terraform-validator – A norms and conventions validator for Terraform.
- validate – Go package for data validation and filtering. support validate Map, Struct, Request(Form, JSON, url.Values, Uploaded Files) data and more features.
- validate – This package provides a framework for writing validations for Go applications.
- validator – Go Struct and Field validation, including Cross Field, Cross Struct, Map, Slice and Array diving.
版本控制
版本控制库
- gh – Scriptable server and net/http middleware for GitHub Webhooks.
- git2go – Go bindings for libgit2.
- go-git – highly extensible Git implementation in pure Go.
- go-vcs – manipulate and inspect VCS repositories in Go.
- hercules – gaining advanced insights from Git repository history.
- hgo – Hgo is a collection of Go packages providing read-access to local Mercurial repositories.
视频
视频处理库
- gmf – Go bindings for FFmpeg av* libraries.
- go-astisub – Manipulate subtitles in GO (.srt, .stl, .ttml, .webvtt, .ssa/.ass, teletext, .smi, etc.).
- go-astits – Parse and demux MPEG Transport Streams (.ts) natively in GO.
- go-m3u8 – Parser and generator library for Apple m3u8 playlists.
- go-mpd – Parser and generator library for MPEG-DASH manifest files.
- goav – Comprehensive Go bindings for FFmpeg.
- gst – Go bindings for GStreamer.
- libgosubs – Subtitle format support for go. Supports .srt, .ttml, and .ass.
- libvlc-go – Go bindings for libvlc 2.X/3.X/4.X (used by the VLC media player).
- m3u8 – Parser and generator library of M3U8 playlists for Apple HLS.
- v4l – Video capture library for Linux, written in Go.
Web 框架
全栈 Web 开发框架
- aah – Scalable, performant, rapid development Web framework for Go.
- Aero – High-performance web framework for Go, reaches top scores in Lighthouse.
- Air – An ideally refined web framework for Go.
- appy – An opinionated productive web framework that helps scaling business easier.
- Banjo – Very simple and fast web framework for Go.
- Beego – beego is an open-source, high-performance web framework for the Go programming language.
- Buffalo – Bringing the productivity of Rails to Go!
- Echo – High performance, minimalist Go web framework.
- Fiber – An Express.js inspired web framework build on Fasthttp.
- Fireball – More “natural” feeling web framework.
- Flamingo – Framework for pluggable web projects. Including a concept for modules and offering features for DI, Configareas, i18n, template engines, graphql, observability, security, events, routing & reverse routing etc.
- Flamingo Commerce – Providing e-commerce features using clean architecture like DDD and ports and adapters, that you can use to build flexible e-commerce applications.
- Gearbox – A web framework written in Go with a focus on high performance and memory optimization.
- Gin – Gin is a web framework written in Go! It features a martini-like API with much better performance, up to 40 times faster. If you need performance and good productivity.
- Ginrpc – Gin parameter automatic binding tool,gin rpc tools.
- Gizmo – Microservice toolkit used by the New York Times.
- go-json-rest – Quick and easy way to setup a RESTful JSON API.
- go-rest – Small and evil REST framework for Go.
- Goa – Goa provides a holistic approach for developing remote APIs and microservices in Go.
- goa – goa is just like koajs for golang, it is a flexible, light, high-performance and extensible web framework based on middleware.
- Golax – A non Sinatra fast HTTP framework with support for Google custom methods, deep interceptors, recursion and more.
- Golf – Golf is a fast, simple and lightweight micro-web framework for Go. It comes with powerful features and has no dependencies other than the Go Standard Library.
- Gondola – The web framework for writing faster sites, faster.
- gongular – Fast Go web framework with input mapping/validation and (DI) Dependency Injection.
- goweb – Web framework with routing, websockets, logging, middleware, static file server (optional gzip), and automatic TLS.
- Goyave – Feature-complete web framework aimed at clean code and fast development, with powerful built-in functionalities.
- hiboot – hiboot is a high performance web application framework with auto configuration and dependency injection support.
- Macaron – Macaron is a high productive and modular design web framework in Go.
- mango – Mango is a modular web-application framework for Go, inspired by Rack, and PEP333.
- Microservice – The framework for the creation of microservices, written in Golang.
- neo – Neo is minimal and fast Go Web Framework with extremely simple API.
- patron – Patron is a microservice framework following best cloud practices with a focus on productivity.
- Resoursea – REST framework for quickly writing resource based services.
- REST Layer – Framework to build REST/GraphQL API on top of databases with mostly configuration over code.
- Revel – High-productivity web framework for the Go language.
- rex – Rex is a library for modular development built upon gorilla/mux, fully compatible with
net/http
. - rux – Simple and fast web framework for build golang HTTP applications.
- tango – Micro & pluggable web framework for Go.
- tigertonic – Go framework for building JSON web services inspired by Dropwizard.
- uAdmin – Fully featured web framework for Golang, inspired by Django.
- utron – Lightweight MVC framework for Go(Golang).
- vox – A golang web framework for humans, inspired by Koa heavily.
- WebGo – A micro-framework to build web apps; with handler chaining, middleware and context injection. With standard library compliant HTTP handlers(i.e. http.HandlerFunc).
- YARF – Fast micro-framework designed to build REST APIs and web services in a fast and simple way.
中间件
常用的中间件
- client-timing – An HTTP client for Server-Timing header.
- CORS – Easily add CORS capabilities to your API.
- formjson – Transparently handle JSON input as a standard form POST.
- go-fault – Fault injection middleware for Go.
- go-server-timing – Add/parse Server-Timing header.
- Limiter – Dead simple rate limit middleware for Go.
- ln-paywall – Go middleware for monetizing APIs on a per-request basis with the Lightning Network (Bitcoin).
- Tollbooth – Rate limit HTTP request handler.
- XFF – Handle
X-Forwarded-For
header and friends.
创建 HTTP 中间件的库
- alice – Painless middleware chaining for Go.
- catena – http.Handler wrapper catenation (same API as “chain”).
- chain – Handler wrapper chaining with scoped data (net/context-based “middleware”).
- go-wrap – Small middlewares package for net/http.
- gores – Go package that handles HTML, JSON, XML and etc. responses. Useful for RESTful APIs.
- interpose – Minimalist net/http middleware for golang.
- mediary – add interceptors to
http.Client
to allow dumping/shaping/tracing/… of requests/responses. - muxchain – Lightweight middleware for net/http.
- negroni – Idiomatic HTTP middleware for Golang.
- render – Go package for easily rendering JSON, XML, and HTML template responses.
- renderer – Simple, lightweight and faster response (JSON, JSONP, XML, YAML, HTML, File) rendering package for Go.
- rye – Tiny Go middleware library (with canned Middlewares) that supports JWT, CORS, Statsd, and Go 1.7 context.
- stats – Go middleware that stores various information about your web application.
路由器
- alien – Lightweight and fast http router from outer space.
- bellt – A simple Go HTTP router.
- Bone – Lightning Fast HTTP Multiplexer.
- Bxog – Simple and fast HTTP router for Go. It works with routes of varying difficulty, length and nesting. And he knows how to create a URL from the received parameters.
- chi – Small, fast and expressive HTTP router built on net/context.
- fasthttprouter – High performance router forked from
httprouter
. The first router fit forfasthttp
. - FastRouter – a fast, flexible HTTP router written in Go.
- gocraft/web – Mux and middleware package in Go.
- Goji – Goji is a minimalistic and flexible HTTP request multiplexer with support for
net/context
. - goroute – Simple yet powerful HTTP request multiplexer.
- GoRouter – GoRouter is a Server/API micro framwework, HTTP request router, multiplexer, mux that provides request router with middleware supporting
net/context
. - gowww/router – Lightning fast HTTP router fully compatible with the net/http.Handler interface.
- httprouter – High performance router. Use this and the standard http handlers to form a very high performance web framework.
- httptreemux – High-speed, flexible tree-based HTTP router for Go. Inspiration from httprouter.
- lars – Is a lightweight, fast and extensible zero allocation HTTP router for Go used to create customizable frameworks.
- mux – Powerful URL router and dispatcher for golang.
- ozzo-routing – An extremely fast Go (golang) HTTP router that supports regular expression route matching. Comes with full support for building RESTful APIs.
- pure – Is a lightweight HTTP router that sticks to the std “net/http” implementation.
- Siesta – Composable framework to write middleware and handlers.
- vestigo – Performant, stand-alone, HTTP compliant URL Router for go web applications.
- violetear – Go HTTP router.
- xmux – High performance muxer based on
httprouter
withnet/context
support. - xujiajun/gorouter – A simple and fast HTTP router for Go.
WebAssembly
- dom – DOM library.
- go-canvas – Library to use HTML5 Canvas, with all drawing within go code.
- tinygo – Go compiler for small places. Microcontrollers, WebAssembly, and command-line tools. Based on LLVM.
- vert – Interop between Go and JS values.
- wasmbrowsertest – Run Go WASM tests in your browser.
- webapi – Bindings for DOM and HTML generated from WebIDL.
Windows
- d3d9 – Go bindings for Direct3D9.
- go-ole – Win32 OLE implementation for golang.
- gosddl – Converter from SDDL-string to user-friendly JSON. SDDL consist of four part: Owner, Primary Group, DACL, SACL.
XML
XML 处理库
- XML-Comp – Simple command line XML comparer that generates diffs of folders, files and tags.
- xml2map – XML to MAP converter written Golang.
- xmlwriter – Procedural XML generation API based on libxml2’s xmlwriter module.
- xpath – XPath package for Go.
- xquery – XQuery lets you extract data from HTML/XML documents using XPath expression.
- zek – Generate a Go struct from XML.
工具
Go 相关软件和插件
代码分析
- apicompat – Checks recent changes to a Go project for backwards incompatible changes.
- dupl – Tool for code clone detection.
- errcheck – Errcheck is a program for checking for unchecked errors in Go programs.
- gcvis – Visualise Go program GC trace data in real time.
- go-checkstyle – checkstyle is a style check tool like java checkstyle. This tool inspired by java checkstyle, golint. The style referred to some points in Go Code Review Comments.
- go-cleanarch – go-cleanarch was created to validate Clean Architecture rules, like a The Dependency Rule and interaction between packages in your Go projects.
- go-critic – source code linter that brings checks that are currently not implemented in other linters.
- go-mod-outdated – An easy way to find outdated dependencies of your Go projects.
- go-outdated – Console application that displays outdated packages.
- goast-viewer – Web based Golang AST visualizer.
- GoCover.io – GoCover.io offers the code coverage of any golang package as a service.
- goimports – Tool to fix (add, remove) your Go imports automatically.
- golines – Formatter that automatically shortens long lines in Go code.
- GoLint – Golint is a linter for Go source code.
- Golint online – Lints online Go source files on GitHub, Bitbucket and Google Project Hosting using the golint package.
- GoPlantUML – Library and CLI that generates text plantump class diagram containing information about structures and interfaces with the relationship among them.
- goreturns – Adds zero-value return statements to match the func return types.
- gosimple – gosimple is a linter for Go source code that specialises on simplifying code.
- gostatus – Command line tool, shows the status of repositories that contain Go packages.
- lint – Run linters as part of go test.
- php-parser – A Parser for PHP written in Go.
- staticcheck – staticcheck is
go vet
on steroids, applying a ton of static analysis checks you might be used to from tools like ReSharper for C#. - tarp – tarp finds functions and methods without direct unit tests in Go source code.
- tickgit – CLI and go package for surfacing code comment TODOs (in any language) and applying a
git blame
to identify the author. - unconvert – Remove unnecessary type conversions from Go source.
- unused – unused checks Go code for unused constants, variables, functions and types.
- validate – Automatically validates struct fields with tags.
编辑器插件
- Go plugin for JetBrains IDEs – Go plugin for JetBrains IDEs.
- go-language-server – A wrapper to turn the VSCode go extension into a language server supporting the language-server-protocol.
- go-mode – Go mode for GNU/Emacs.
- go-plus – Go (Golang) Package For Atom That Adds Autocomplete, Formatting, Syntax Checking, Linting and Vetting.
- gocode – Autocompletion daemon for the Go programming language.
- goimports-reviser – Formatting tool for imports.
- goprofiling – This extension adds benchmark profiling support for the Go language to VS Code.
- GoSublime – Golang plugin collection for the text editor SublimeText 3 providing code completion and other IDE-like features.
- gounit-vim – Vim plugin for generating Go tests based on the function’s or method’s signature.
- theia-go-extension – Go language support for the Theia IDE.
- vim-compiler-go – Vim plugin to highlight syntax errors on save.
- vim-go – Go development plugin for Vim.
- vscode-go – Extension for Visual Studio Code (VS Code) which provides support for the Go language.
- Watch – Runs a command in an acme win on file changes.
Go 代码生成工具
- generic – flexible data type for Go.
- genny – Elegant generics for Go.
- gocontracts – brings design-by-contract to Go by synchronizing the code with the documentation.
- gonerics – Idiomatic Generics in Go.
- gotests – Generate Go tests from your source code.
- gounit – Generate Go tests using your own templates.
- hasgo – Generate Haskell inspired functions for your slices.
- re2dfa – Transform regular expressions into finite state machines and output Go source code.
- TOML-to-Go – Translates TOML into a Go type in the browser instantly.
- xgen – XSD (XML Schema Definition) parser and Go/C/Java/Rust/TypeScript code generator.
Go 工具
- colorgo – Wrapper around
go
command for colorizedgo build
output. - depth – Visualize dependency trees of any package by analyzing imports.
- generator-go-lang – A Yeoman generator to get new Go projects started.
- go-callvis – Visualize call graph of your Go program using dot format.
- go-james – Go project skeleton creator, builds and tests your projects without the manual setup.
- go-pkg-complete – Bash completion for go and wgo.
- go-swagger – Swagger 2.0 implementation for go. Swagger is a simple yet powerful representation of your RESTful API.
- godbg – Implementation of Rusts
dbg!
macro for quick and easy debugging during development. - gomodrun – Go tool that executes and caches binaries included in go.mod files.
- gothanks – GoThanks automatically stars your go.mod github dependencies, sending this way some love to their maintainers.
- igo – An igo to go transpiler (new language features for Go language!)
- OctoLinker – Navigate through go files efficiently with the OctoLinker browser extension for GitHub.
- richgo – Enrich
go test
outputs with text decorations. - rts – RTS: response to struct. Generates Go structs from server responses.
- typex – Examine Go types and their transitive dependencies, alternatively export results as TypeScript value objects (or types) declaration.
软件包
Go 编写的软件
DevOps 工具集
- abbreviate – abbreviate is a tool turning long strings in to shorter ones with configurable seperaters, for example to embed branch names in to deployment stack IDs.
- aptly – aptly is a Debian repository management tool.
- aurora – Cross-platform web-based Beanstalkd queue server console.
- awsenv – Small binary that loads Amazon (AWS) environment variables for a profile.
- Blast – A simple tool for API load testing and batch jobs.
- bombardier – Fast cross-platform HTTP benchmarking tool.
- bosun – Time Series Alerting Framework.
- cassowary – Modern cross-platform HTTP load-testing tool written in Go.
- DepCharge – Helps orchestrating the execution of commands across the many dependencies in larger projects.
- Dockerfile-Generator – A go library and an executable that produces valid Dockerfiles using various input channels.
- dogo – Monitoring changes in the source file and automatically compile and run (restart).
- drone-jenkins – Trigger downstream Jenkins jobs using a binary, docker or Drone CI.
- drone-scp – Copy files and artifacts via SSH using a binary, docker or Drone CI.
- Dropship – Tool for deploying code via cdn.
- easyssh-proxy – Golang package for easy remote execution through SSH and SCP downloading via
ProxyCommand
. - fac – Command-line user interface to fix git merge conflicts.
- gaia – Build powerful pipelines in any programming language.
- Gitea – Fork of Gogs, entirely community driven.
- gitea-github-migrator – Migrate all your GitHub repositories, issues, milestones and labels to your Gitea instance.
- go-furnace – Hosting solution written in Go. Deploy your Application with ease on AWS, GCP or DigitalOcean.
- go-selfupdate – Enable your Go applications to self update.
- gobrew – gobrew lets you easily switch between multiple versions of go.
- godbg – Web-based gdb front-end application.
- Gogs – A Self Hosted Git Service in the Go Programming Language.
- gonative – Tool which creates a build of Go that can cross compile to all platforms while still using the Cgo-enabled versions of the stdlib packages.
- govvv – “go build” wrapper to easily add version information into Go binaries.
- gox – Dead simple, no frills Go cross compile tool.
- goxc – build tool for Go, with a focus on cross-compiling and packaging.
- grapes – Lightweight tool designed to distribute commands over ssh with ease.
- GVM – GVM provides an interface to manage Go versions.
- Hey – Hey is a tiny program that sends some load to a web application.
- jcli – Jenkins CLI allows you manage your Jenkins as an easy way.
- kala – Simplistic, modern, and performant job scheduler.
- kcli – Command line tool for inspecting kafka topics/partitions/messages.
- kubernetes – Container Cluster Manager from Google.
- lstags – Tool and API to sync Docker images across different registries.
- lwc – A live-updating version of the UNIX wc command.
- manssh – manssh is a command line tool for managing your ssh alias config easily.
- Moby – Collaborative project for the container ecosystem to assemble container-based systems.
- Mora – REST server for accessing MongoDB documents and meta data.
- ostent – collects and displays system metrics and optionally relays to Graphite and/or InfluxDB.
- Packer – Packer is a tool for creating identical machine images for multiple platforms from a single source configuration.
- Pewpew – Flexible HTTP command line stress tester.
- Pomerium – Pomerium is an identity-aware access proxy.
- Rodent – Rodent helps you manage Go versions, projects and track dependencies.
- s3-proxy – S3 Proxy with GET, PUT and DELETE methods and authentication (OpenID Connect and Basic Auth).
- s3gof3r – Small utility/library optimized for high speed transfer of large objects into and out of Amazon S3.
- s5cmd – Blazing fast S3 and local filesystem execution tool.
- Scaleway-cli – Manage BareMetal Servers from Command Line (as easily as with Docker).
- script – Making it easy to write shell-like scripts in Go for DevOps and system administration tasks.
- sg – Benchmarks a set of HTTP endpoints (like ab), with possibility to use the response code and data between each call for specific server stress based on its previous response.
- skm – SKM is a simple and powerful SSH Keys Manager, it helps you to manage your multiple SSH keys easily!
- StatusOK – Monitor your Website and REST APIs.Get Notified through Slack, E-mail when your server is down or response time is more than expected.
- terraform-provider-openapi – Terraform provider plugin that dynamically configures itself at runtime based on an OpenAPI document (formerly known as swagger file) containing the definitions of the APIs exposed.
- traefik – Reverse proxy and load balancer with support for multiple backends.
- trubka – A CLI tool to manage and troubleshoot Apache Kafka clusters with the ability of generically publishing/consuming protocol buffer and plain text events to/from Kafka.
- uTask – Automation engine that models and executes business processes declared in yaml.
- Vegeta – HTTP load testing tool and library. It’s over 9000!
- webhook – Tool which allows user to create HTTP endpoints (hooks) that execute commands on the server.
- Wide – Web-based IDE for Teams using Golang.
- winrm-cli – Cli tool to remotely execute commands on Windows machines.
其他软件
- Better Go Playground – Go playground with syntax highlight, code completion and other features.
- borg – Terminal based search engine for bash snippets.
- boxed – Dropbox based blog engine.
- Cherry – Tiny webchat server in Go.
- Circuit – Circuit is a programmable platform-as-a-service (PaaS) and/or Infrastructure-as-a-Service (IaaS), for management, discovery, synchronization and orchestration of services and hosts comprising cloud applications.
- Comcast – Simulate bad network connections.
- confd – Manage local application configuration files using templates and data from etcd or consul.
- croc – Easily and securely send files or folders from one computer to another.
- Docker – Open platform for distributed applications for developers and sysadmins.
- Documize – Modern wiki software that integrates data from SaaS tools.
- dp – Through SDK for data exchange with blockchain, developers can get easy access to DAPP development.
- drive – Google Drive client for the commandline.
- Duplicacy – A cross-platform network and cloud backup tool based on the idea of lock-free deduplication.
- Gebug – A tool that makes debugging of Dockerized Go applications super easy by enabling Debugger and Hot-Reload features, seamlessly.
- gfile – Securely transfer files between two computers, without any third party, over WebRTC.
- Go Package Store – App that displays updates for the Go packages in your GOPATH.
- go-peerflix – Video streaming torrent client.
- GoBoy – Nintendo Game Boy Color emulator written in Go.
- gocc – Gocc is a compiler kit for Go written in Go.
- GoDocTooltip – Chrome extension for Go Doc sites, which shows function description as tooltip at function list.
- GoLand – Full featured cross-platform Go IDE.
- Gor – Http traffic replication tool, for replaying traffic from production to stage/dev environments in real-time.
- Guora – A self-hosted Quora like web application written in Go.
- hugo – Fast and Modern Static Website Engine.
- ide – Browser accessible IDE. Designed for Go with Go.
- ipe – Open source Pusher server implementation compatible with Pusher client libraries written in GO.
- joincap – Command-line utility for merging multiple pcap files together.
- Juju – Cloud-agnostic service deployment and orchestration – supports EC2, Azure, Openstack, MAAS and more.
- Leaps – Pair programming service using Operational Transforms.
- lgo – Interactive Go programming with Jupyter. It supports code completion, code inspection and 100% Go compatibility.
- limetext – Lime Text is a powerful and elegant text editor primarily developed in Go that aims to be a Free and open-source software successor to Sublime Text.
- LiteIDE – LiteIDE is a simple, open source, cross-platform Go IDE.
- mockingjay – Fake HTTP servers and consumer driven contracts from one configuration file. You can also make the server randomly misbehave to help do more realistic performance tests.
- myLG – Command Line Network Diagnostic tool written in Go.
- naclpipe – Simple NaCL EC25519 based crypto pipe tool written in Go.
- nes – Nintendo Entertainment System (NES) emulator written in Go.
- Orbit – A simple tool for running commands and generating files from templates.
- peg – Peg, Parsing Expression Grammar, is an implementation of a Packrat parser generator.
- restic – De-duplicating backup program.
- scc – Sloc Cloc and Code, a very fast accurate code counter with complexity calculations and COCOMO estimates.
- Seaweed File System – Fast, Simple and Scalable Distributed File System with O(1) disk seek.
- shell2http – Executing shell commands via http server (for prototyping or remote control).
- snap – Powerful telemetry framework.
- Snitch – Simple way to notify your team and many tools when someone has deployed any application via Tsuru.
- Stack Up – Stack Up, a super simple deployment tool – just Unix – think of it like ‘make’ for a network of servers.
- syncthing – Open, decentralized file synchronization tool and protocol.
- tcpprobe – TCP tool for network performance and path monitoring, including socket statistics.
- term-quiz – Quizzes for your terminal.
- toxiproxy – Proxy to simulate network and system conditions for automated tests.
- tsuru – Extensible and open source Platform as a Service software.
- vaku – CLI & API for folder-based functions in Vault like copy, move, and search.
- vFlow – High-performance, scalable and reliable IPFIX, sFlow and Netflow collector.
- wellington – Sass project management tool, extends the language with sprite functions (like Compass).
- woke – Detect non-inclusive language in your source code.
资源
到哪里寻找最新的 Go 库
基准测试
- autobench – Framework to compare the performance between different Go versions.
- go-benchmark-app – Powerful HTTP-benchmark tool mixed with Аb, Wrk, Siege tools. Gathering statistics and various parameters for benchmarks and comparison results.
- go-benchmarks – Few miscellaneous Go microbenchmarks. Compare some language features to alternative approaches.
- go-http-routing-benchmark – Go HTTP request router benchmark and comparison.
- go-json-benchmark – Go JSON benchmark.
- go-web-framework-benchmark – Go web framework benchmark.
- go_serialization_benchmarks – Benchmarks of Go serialization methods.
- gocostmodel – Benchmarks of common basic operations for the Go language.
- golang-sql-benchmark – Collection of benchmarks for popular Go database/SQL utilities.
- gospeed – Go micro-benchmarks for calculating the speed of language constructs.
- kvbench – Key/Value database benchmark.
- skynet – Skynet 1M threads microbenchmark.
- speedtest-resize – Compare various Image resize algorithms for the Go language.
会议活动
- Capital Go – Washington, D.C., USA.
- dotGo – Paris, France.
- GoCon – Tokyo, Japan.
- GoDays – Berlin, Germany.
- GoLab – Florence, Italy.
- GolangUK – London, UK.
- GopherChina – Shanghai, China.(中国上海)
- GopherCon – Denver, USA.
- GopherCon Australia – Sydney, Australia.
- GopherCon Brazil – Florianópolis, BR.
- GopherCon Europe – Berlin, Germany.
- GopherCon India – Pune, India.
- GopherCon Israel – Tel Aviv, Israel.
- GopherCon Russia – Moscow, Russia.
- GopherCon Singapore – Mapletree Business City, Singapore.
- GopherCon Vietnam – Ho Chi Minh City, Vietnam.
- GothamGo – New York City, USA.
- GoWayFest – Minsk, Belarus.
电子书
- A Go Developer’s Notebook
- An Introduction to Programming in Go
- Build Web Application with Golang
- Building Web Apps With Go
- For the Love of Go – A series of introductory books for Go beginners.
- Go 101 – 着墨于Go语法语义以及运行时相关知识点的编程指导书
- Go Bootcamp
- GoBooks – Go Books 精选列表
- How To Code in Go – 面向初学者的 Go 电子书
- Learning Go(中文版)
- Network Programming With Go
- Spaceship Go A Journey to the Standard Library
- The Go Programming Language(Go 程序设计语言:俗称 Go 圣经)
- The Golang Standard Library by Example(Go 标准库使用示例)
- Web Application with Go the Anti-Textbook(不使用框架开发 Go Web 应用)
- Writing A Compiler In Go(通过 Go 实现编译器)
- Writing An Interpreter In Go(通过 Go 实现解释器)
- Go 语言高级编程
- Go 语言程序设计与实现
- Go 语言高性能编程
- Go 语言编程之旅
Gophers
- Free Gophers Pack – Gopher graphics pack by Maria Letta with illustrations and emotional characters in vector and raster.
- Go-gopher-Vector – Go gopher Vector Data [.ai, .svg].
- gopher-logos – adorable gopher logos.
- gopher-stickers
- gopher-vector
- gophericons
- gopherize.me – Gopherize yourself.
- gophers – Gopher artworks by Ashley McNamara.
- gophers – Free gophers.
- gophers – random gopher graphics.
- gophers – Gopher amigurumi toy pattern.
线下聚会
- Basel Go Meetup
- Belfast Gophers
- Berlin Golang
- Brisbane Gophers
- Canberra Gophers
- Go Language NYC
- Go London User Group
- Go Remote Meetup
- Go Toronto
- Go User Group Atlanta
- GoBandung
- GoBridge, San Francisco, CA
- GoCracow – Krakow, Poland
- GoJakarta
- Golang Amsterdam
- Golang Argentina
- Golang Baltimore, MD
- Golang Bangalore
- Golang Belo Horizonte – Brazil
- Golang Boston
- Golang Bulgaria
- Golang Cardiff, UK
- Golang Copenhagen
- Golang Curitiba – Brazil
- Golang DC, Arlington, VA
- Golang Dorset, UK
- Golang Estonia
- Golang Gurgaon, India
- Golang Hamburg – Germany
- Golang Israel
- Golang Joinville – Brazil
- Golang Korea
- Golang Lima – Peru
- Golang Lyon
- Golang Marseille
- Golang Melbourne
- Golang Mountain View
- Golang New York
- Golang North East
- Golang Paris
- Golang Pune
- Golang Singapore
- Golang Stockholm
- Golang Sydney, AU
- Golang São Paulo – Brazil
- Golang Taipei
- Golang Turkey
- Golang Vancouver, BC
- Golang Vienna, Austria
- Golang Казань
- Golang Москва
- Golang Питер
- GoSF – San Francisco, CA
- Istanbul Golang
- Seattle Go Programmers
- Ukrainian Golang User Groups
- Utah Go User Group
- Women Who Go – San Francisco, CA
代码风格
社交媒体
网站
- Awesome Go @LibHunt – Your go-to Go Toolbox.
- Awesome Remote Job – Curated list of awesome remote jobs. A lot of them are looking for Go hackers.
- awesome-awesomeness – List of other amazingly awesome lists.
- CodinGame – Learn Go by solving interactive tasks using small games as practical examples.
- Go Blog – The official Go blog.
- Go Challenge – Learn Go by solving problems and getting feedback from Go experts.
- Go Code Club – A group of Gophers read and discuss a different Go project every week.
- Go Community on Hashnode – Community of Gophers on Hashnode.
- Go Forum – Forum to discuss Go.
- Go In 5 Minutes – 5 minute screencasts focused on getting one thing done.
- Go Projects – List of projects on the Go community wiki.
- Go Report Card – A report card for your Go package.
- go.dev – A hub for Go developers.
- gocryforhelp – Collection of Go projects that needs help. Good place to start your open-source way in Go.
- godoc.org – Documentation for open source Go packages.
- Golang Developer Jobs – Developer Jobs exclusivly for Golang related Roles.
- Golang Flow – Post Updates, News, Packages and more.
- Golang News – Links and news about Go programming.
- Golang Resources – A curation of the best articles, exercises, talks and videos to learn Go.
- golang-graphics – Collection of Go images, graphics, and art.
- golang-nuts – Go mailing list.
- Google Plus Community – The Google+ community for #golang enthusiasts.
- Gopher Community Chat – Join Our New Slack Community For Gophers (Understand how it came).
- Gophercises – Free coding exercises for budding gophers.
- gowalker.org – Go Project API documentation.
- json2go – Advanced JSON to Go struct conversion – online tool.
- justforfunc – Youtube channel dedicated to Go programming language tips and tricks, hosted by Francesc Campoy @francesc.
- Lille Gophers – Golang talks community in Lille, France (@LilleGophers).
- Made with Golang
- r/Golang – News about Go.
- studygolang – The community of studygolang in China.
- Trending Go repositories on GitHub today – Good place to find new Go libraries.
- TutorialEdge – Golang
教程
- 50 Shades of Go – Traps, Gotchas, and Common Mistakes for New Golang Devs.
- A Guide to Golang E-Commerce – Building a Golang site for e-commerce (demo included).
- A Tour of Go – Interactive tour of Go.
- Build web application with Golang – Golang ebook intro how to build a web app with golang.
- Building and Testing a REST API in Go with Gorilla Mux and PostgreSQL – We’ll write an API with the help of the powerful Gorilla Mux.
- Building Go Web Applications and Microservices Using Gin – Get familiar with Gin and find out how it can help you reduce boilerplate code and build a request handling pipeline.
- Caching Slow Database Queries – How to cache slow database queries.
- Canceling MySQL – How to cancel MySQL queries.
- Design Patterns in Go – Collection of programming design patterns implemented in Go.
- Ethereum Development with Go – A little e-book on Ethereum Development with Go.
- Games With Go – A video series teaching programming and game development.
- Go By Example – Hands-on introduction to Go using annotated example programs.
- Go Cheat Sheet – Go’s reference card.
- Go database/sql tutorial – Introduction to database/sql.
- Go Playground for iOS – Interactively edit & play Go snippets on your mobile device.
- Go WebAssembly Tutorial – Building a Simple Calculator
- go-patterns – Curated list of Go design patterns, recipes and idioms.
- goapp – An opinionated guideline to structure & develop a Go web application/service.
- Golang for Node.js Developers – Examples of Golang compared to Node.js for learning.
- Golangbot – Tutorials to get started with programming in Go.
- GolangCode – Collection of code snippets and tutorials to help tackle every day issues.
- GopherSnippets – Code snippets with tests and testable examples for the Go programming language.
- Hackr.io – Learn Go from the best online golang tutorials submitted & voted by the golang programming community.
- How to Benchmark: dbq vs sqlx vs GORM – Learn how to benchmark in Go. As a case-study, we will benchmark dbq, sqlx and GORM.
- How To Deploy a Go Web Application with Docker – Learn how to use Docker for Go development and how to build production Docker images.
- How to Use Godog for Behavior-driven Development in Go – Get started with Godog — a Behavior-driven development framework for building and testing Go applications.
- Learn Go with TDD – Learn Go with test-driven development.
- Learning Golang – From zero to hero – Getting started with golang for beginner.
- package main – YouTube channel about Programming in Go.
- Programming with Google Go – Coursera Specialization to learn about Go from scratch.
- The world’s easiest introduction to WebAssembly with Golang
- Working with Go – Intro to go for experienced programmers.
- Your basic Go – Huge collection of tutorials and how to’s.