导语:我想很多程序员应该记得 GitHub 上有一个 Awesome - XXX 系列的资源整理。本列表翻译自awesome-Go Awesome 系列虽然挺全,但基本只对收录的资源做了极为简要的介绍,如果有更详细的中文介绍,对相应开发者的帮助会更大。这也是我们发起这个开源项目的初衷。
欢迎大家为列表贡献高质量的新资源,提交 PR 时请参照以下要求:请确保推荐的资源自己使用过提交 PR 时请注明推荐理由
资源列表管理收到 PR 请求后,会定期(每周)在微博转发本周提交的 PR 列表,并在微博上面听取使用过这些资源的意见。确认通过后,会加入资源大全。
感谢您的贡献!
本项目的参与者 维护者:tangyouhua
贡献者:艾凌风、Allenxuxu、sanrentai
注:名单不分排名,不定期补充更新
烦请诸位参与前看一眼参与指南 。感谢各位贡献者,你们是最棒的! contributors
目录 音频和音乐库 认证和OAuth授权 机器人相关 命令行工具 标准 CLI 高级控制台UI 配置管理 持续集成 css预处理 数据结构 数据库 数据库工具 SQL 查询语句构建库 数据库驱动 日期和时间 分布式系统 动态DNS 邮件库 脚本语言与嵌入式编程 错误处理 文件处理 金融领域相关库 表单 函数式编程 游戏开发 代码生成与泛型 位置信息与地理GEO处理库 Goroutines GUI 硬件 Images 图像处理 物联网(IOT) 作业调度 JSON Loggantsing 日志库 机器学习 Microsoft Office EXCEL 其他杂项 依赖性注入 项目结构 字符串处理 暂未分类 自然语言处理 网络相关库 Http Client OpenGL ORM Go语言包管理 查询语句 资源嵌入 数据分析与数据科学 安全领域相关库 序列化 服务端应用 流处理 模板引擎 测试相关 文本处理 第三方API 工具库 UUID 校验库 版本控制 视频 web框架 中间件 中间件 创建http中间件的代码库 路由 WebAssembly Windows XML 相关工具 代码分析 编辑器插件 Go 代码生成工具 Go工具 软件包 devops 工具 其他软件库和软件包
用于操作音频的库flac - 原生 Go FLAC 解码器flac - 原生 Go FLAC 解码器gaad - 原生 Go AAC 比特流解析器Go-sox - libsox 的 Go 语言接口Go_mediainfo - libmediainfo 的 Go 语言接口Gosamplerate - libsamplerate 的 Go 语言接口id3v2 - 快速且稳定的 ID3 解析及写入库mix - 基于序列的 Go 语言混音器,可用于音乐 app。mp3 - 原生 Go MP3 解码器music-theory - Go 语言编写的音乐理论模型PortAudio - 音频 I/O 库的 Go 语言接口portmidi - PortMidi 的 Go 语言接口taglib - taglib 的 Go 语言接口vorbis - "原生" Go Vorbis 解码器 (使用 CGo, 但是没有其他依赖).waveform - 一个可以通过音频流生成波形图像的包
用来生成认证授权模板的库authboss - 用于 web 开发的组件化认证授权系统。它尝试尽可能的移除模板代码以及硬编码,这使你每次新建 web 项目的时候,可以做到即插即用、配置并开始开发你的 web 英语,而不必每次都重新创建一个认证授权系统。casbin - 一个支持接入控制模型(例如:ACL,RBAC,ABAC)的授权库Go-AWS-Auth - AWS 请求签名库Go-jose - Fairly complete implementation of the JOSE working group's JSON Web Token, JSON Web 签名以及JSON Web 加密 specs.Go-oauth2-server - 使用 Go 语言编写的独立、符合标准的 OAuth2 服务器Go.auth - 为 Go 语言 web 应用提供的授权 API.Gologin - 可以串连使用OAuth1 和 OAuth2 认证服务Gorbac - 一个用 Go 语言实现的轻量级RBACGoth - 提供了一种简洁的、惯用的方式来使用OAuth 和 OAuth2.httpauth - HTTP 认证中间件jwt - 简单易用的一个JSON Web Tokens (JWT)的实现jwt-auth - JWT 为 Go 语言 HTTP 服务器编写的 jwt 中间件,有多种配置选项jwt-Go - Go 语言实现的JSON Web Tokens (JWT).loginsrv - JWT 登录微服务,可以继承OAuth2 (Github), htpasswd, osiam等后端。oauth2 - Goauth2的继承者。 通用 OAuth 2.0 库,集成了对JWT, Google APIs, Compute Engine 和 App Engine的支持.osin - Go 语言 OAuth2 服务器库permissions2 - 用于追踪用户,登录状态和许可的库。使用安全 cookies 和 bcrypt.session - Go 语言会话管理(支持 Google App Engine - GAE)sessions - 为 Go 语言 HTTP 服务器开发的非常简单的、高性能的、高可定制的会话服务traefik - 反向代理和负载均衡库,支持多种后端yubiGo - Yubikey 客户端,提供了用于在 Go 语言应用中集成Yubico Yubikey 的 API
用于构建标准或基础命令行应用的库argv - 用于分隔命令行字符串并将其作为参数的 Go 语言库,使用 bash 的语法cli - 功能强大,使用简单的命令行软件包,基于Golang tagcli-init - 提供一种简单、易上手的方式 来使用 Go 语言编写命令行程序climax - 一个更为人性化的命令行工具,继承了 Go command 的精神cobra - 用于现代 Go 语言命令行交互的工具complete - 使用 Go 语言编写的 bash 命令补全工具以及 Go 命令补全工具docopt.Go - 能令你会心一笑的命令行参数解析器drive - 命令行的 Google Drive 客户端flag - 简单、强大的命令行选项解析库,支持 Go 语言子命令Go-arg - 使用 Go 语言编写的基于结构的命令行参数解析库Go-flags - Go 语言命令行选项解析器kingpin - 命令行及标记解析器,支持子命令liner - 命令行文本编辑器mitchellh/cli - 用于实现命令行交互的 Go 语言库mow.cli - 用于构建命令行程序的库,支持更加精准的标记及选项解析和验证pflag - Go flag 软件包的替代品, 实现了POSIX/GNU-风格的 --flags.readline - 纯 Go 语言实现的 GNU-Readline 支持其大部分功能,基于MIT 协议发布。sflags - 基于结构的 flag 生成器,支持flag, urfave/cli, pflag, cobra, kingpin等其他库ukautz/clif - 一个小型命令行程序开发框架urfave/cli - 简单、快速、有趣的、用于构建 Go 语言命令行程序的软件包(formerly codegangsta/cli).wlog - 简单的登录接口,支持跨平台颜色和并发wmenu - 为命令行程序提供简单的菜单结构选项,供用户进行选择
用于构建命令行程序以及控制台界面的库aurora - ANSI 终端颜色,支持 fmt.Printf/Sprintfchalk - 符合直觉的用于美化命令行输出的库color - 多功能的用于彩色化命令行输出的库colourize - 用于实现 ANSI 彩色文本的 Go 语言库Go-ataman - 用于渲染 ANSI 彩色文本模板的库Go-colorable - Windows 上使用的可以输出彩色文本的库Go-colortext - 用于在终端进行多彩文字输出的库Go-isatty - Go 语言使用的 isattyGocui - 一个用于构建控制台界面的极简的 Go 语言库Gommon/color - 多样的命令行文本mpb - 为命令行提供多个进度条的工具termbox-Go - Termbox 是一个用于构建跨平台的、与文本的交互界面的库termtables - Ruby 库的 Go 语言接口terminal-tables 用于生成简单的 ASCII 表格,同时支持 markdown 和 HTML 输出termui - Go 终端控制面板,基于 termbox-Go 并受到了blessed-contrib的启发uilive - 用于实时更新终端输出的库uiprogress - 一个很灵活的用于渲染进度条的库uitable - 一个用于改善命令行中表格数据可读性的库
用于进行配置解析的库config - JSON 或 YAML 配置的封装,支持环境变量和标记解析configure - 可以通过多种途径进行配置,包括 JSON, 标记位以及环境变量env - 解析环境变量为 Go 语言结构体envcfg - 解析环境变量为 Go 语言结构体envconf - 通过环境变量来配置envconfig - 通过环境变量读取配置gcfg - 读取类 INI 类型的配置文件为 Go 语言结构体,支持自定义变量和节GoConfig - 通过命令行的输入、环境变量、配置文件来初始化一个结构体兵将一个结构体解析为输入Godotenv - Ruby 库 dotenv 的 Go 语言接口 (通过 .env 来获取环境变量)Gofigure - 让 Go 语言应用程序配置变得简单Gone/jconf - 模块化 JSON 配置工具。允许你将配置参数结构体和使用它的代码放在一起,而不需要让主配置文件了解所有子模块的细节来进行序列化hjson - 人性化的 JSON,一个便于程序员使用和阅读的配置文件格式。更加轻松的语法,更少的错误和更多的注释inGo - 将配置标记持久化到一个类似 ini 的文件中ini - 用于读写INI 文件的库joshbetz/config - 消息配置库,可以解析环境变量、JSON 文件并根据SIGHUP自动重新载入mini -用于解析类 ini 文件的库store - 轻量级配置管理viper - 长牙的(这个库名叫毒蛇)Go 语言配置工具xdg -遵守 XDG 标准 的配置工具
帮助你进行持续集成的库drone - Drone 是一个基于 Docker的持续集成平台,使用 Go 语言编写Goveralls - Coveralls.io 是一个持续代码覆盖率检测系统,这个库提供了 Go 语言的支持overalls - 针对多package 的 Go 语言项目,为 Goveralls 这样的工具生成覆盖率报告roveralls - 回归覆盖测试工具
用于对 CSS 文件预处理的工具c6 - 高性能、兼容 SAAS 的编译器gcss - 纯 Go 语言编写的 CSS 预处理器Go-libsass - 100%兼容 Sass 的库 libsass 的 Go 语言封装
通用数据结构及算法binpacker - 二进制数据封包拆包工具,帮你构建自定义的二进制数据流bit - Go 语言集合数据结构。提供了额外的位操作功能bitset - 实现了 bitset 的 Go 语言包.bloom - Go 语言实现的布隆过滤器(bloom filter)bloom - Go 语言实现的布隆过滤器boomfilters - 概率统计数据结构,用于处理大量连续的数据。count-min-log - Go 语言实现的 Count-Min-Log sketch 算法(类似 Count-Min sketch 算法,但是使用的内存更少).cuckoofilter - Cuckoo 过滤器:一个用go语言实现的计数布隆过滤器的替代品encoding - 整型压缩库Go-adaptive-radix-tree - Go 语言实现的自适应基数树Go-datastructures - 一组有用的、高性能的、线程安全的数据结构Go-geoindex - 基于内存存储的地理索引Go-rquad - 区域四叉树,支持有效点位置和领域发现Gods - Go 语言数据结构、容器、集合、列表、栈、键值对、 BidiMaps、树、HashSet 等Golang-set - 线程安全和非线程安全的高性能集合Goskiplist - Go 语言实现的跳跃表Gota - 为go语言实现了数据帧,序列以及数据噪音的方法hilbert - 用于映射空间填充曲线(例如希尔伯特曲线和皮亚诺曲线)和数值的库。hyperloglog - HyperLogLog implementation with Sparse, LogLog-Beta bias correction and TailCut space reduction.levenshtein - 编辑距离(levenshtein distance)和相似性度量, 可以自定义编辑代价和and Winkler-like bonus for common prefix.levenshtein - Go 语言实现计算编辑距离mafsa - Go 语言实现的 MA-FSA ,包含最小完美哈希merkletree - 实现了梅克尔树,提供了一种高效、安全的数据结构内容验证方法roaring - 实现了压缩 bitsets 的Go语言库skiplist - Go语言实现的跳跃表trie - Go语言实现的Trie树ttlcache - In-memory LRU string-interface{} map with expiration for Golangwillf/bloom - 实现了布隆过滤器的库Go 语言实现的数据库*BigCache - 为 gigabytes 量级数据设计的高效键/值缓存bolt - 底层键值数据库buntdb - 快速,可嵌入的,内存键值数据库,可定义索引及 spatialcache2Go - 基于内存存储的键值缓存,支持自动基于超时的自动失效cockroach - 可扩展的、一致的事务型数据库couchcache - RESTful 缓存微服务,基于Couchbasedgraph - 可扩展的、分布式的、低延时、高吞吐的图数据库diskv - 具有 disk-backed 功能的持久化键值存储eliasdb - 无依赖、事物型图数据库,支持 REST API、短语搜索以及类 SQL 的查询语言forestdb - ForestDB 的 Go 语言借口GCache - 支持缓存过期、 LFU、 LRU 和 ARC 的缓存库geocache - 基于内存存储的缓存,适用于分布式部署的应用Go-cache - 内存键值存储/缓存库,适用于单机程序Goleveldb - 使用 Go 语言实现的 LevelDBgroupcache - Groupcache 是一个缓存及缓存填充库,在很多情况下用于替代 memcached.influxdb - 用于计量、事件及实时分析的、可扩展的数据库ledisdb - Ledisdb 是一个高性能 NoSQL 数据库,类似 RedileviGo - LeviGo 是 LevelDB的 Go 语言封装moss - Moss 是一个简单的 LSM 键值存储引擎,100% Go 语言实现piladb - 轻量级 RESTful 数据库引擎,基于堆栈结构prometheus - 监控系统及时间序列数据库rqlite - 基于 SQLite 的轻量级的、分布式的关系型数据库Scribble - 小巧的 JSON 文件存储tempdb - 临时数据的键值对存储tidb - TiDB 是一个分布式的 SQL 数据库。受到了 Google F1的启发tiedot - 基于 Go 语言的 NoSQL 数据库Tile38 - 地理位置数据库及实时地理围栏
数据库迁移darwin - 数据库模式进化库Go-fixtures - 类似 DjanGo fixtures,用于 Golang 的內建数据库/sql 库Goose - 数据库迁移工具。你可以通过编写增量 SQL 或 Go 语言脚本来管理你的数据库Gormigrate - 数据库模式迁移帮助工具,用于 Gorm ORM.migrate - 数据库迁移。命令行及 Go 语言库pravasan - 简单的迁移,目前支持 MySQL 但是近期打算支持 Postgres, SQLite, MonGoDB 等等soda - 数据库迁移、创建、 ORM等等,用于 MySQL, PostgreSQL, 以及 SQLite.sql-migrate - 数据库迁移工具,允许利用 Go-bindata 将数据库迁移嵌入应用程序
数据库工具Go-mysql - 用于处理 MySQL 协议及复制的 Go 语言工具集.Go-mysql-elasticsearch - 将你的 MySQL 数据自动同步到 Elasticsearchkingshard - kingshard 是一个Go语言编写的高性能 MySQL 数据库代理myreplication - MySql 二进制 log 复制监听器,支持基于语句和基于行的复制orchestrator - MySQL复制拓扑管理器及可视化工具pgweb - 基于 Web 的 PostgreSQL 数据库浏览工具pREST - 通过任何 PostgreSQL 数据库提供 RESTful APIvitess - vitess 提供了能够使大型 web 服务 MySQL 数据库的扩展变得更加容易的服务器及工具
用于创建和使用SQL的库dat - Go 语言 Postgres 数据库工具集Dotsql - 一个Go语言库,帮助你将 sql 文件保存在一个地方并且方便的取用Goqu - 地道的 SQL 语句创建器和查询库iGor - PostgreSQL 的抽象层,支持高级功能以及类 Gorm 的语法ozzo-dbx - 提供强大的数据恢复功能以及构建不区分数据库类型的查询的能力scaneo - 生成用于将数据库行转换为任意结构体的 Go 代码sqrl - SQL 查询创建器,是 Squirrel 的一个分叉版本,进行了性能方面的优化Squirrel - 一个帮助你构建 SQL 查询的库xo - 基于已知的数据库表或自定义查询生成地道的 Go 语言代码,支持 PostgreSQL, MySQL, SQLite, Oracle, 以及 Microsoft SQL Server.
用于连接和操作数据库的库关系型数据库 avatica - Apache Phoenix/Avatica SQL 驱动bgc - 数据库连接工具包,用于通过 Go 语言访问 BigQueryfirebirdsql - Firebird RDBMS SQL 驱动Go-adodb - Microsoft ActiveX 对象数据库驱动Go-bqstreamer - BigQuery fast and concurrent stream insert.Go-mssqldb - Go 语言Microsoft MSSQL 驱动Go-oci8 - Oracle 驱动Go-sql-driver/mysql - Go 语言 MySQ L驱动Go-sqlite3 - Go 语言的 SQLite3 驱动Gofreetds Microsoft MSSQL 驱动。 FreeTDS的go语言封装pgx - PostgreSQL 驱动,支持比 database/sql 更多的特性pq - 纯 Go 语言编写的 Postgres 驱动
NoSQL 数据库 aerospike-client-Go - Aerospike 客户端aranGolite - AranGoDB 的轻量级 Go 语言驱动asc - 用于go语言连接 Aerospikecayley - 支持多种后端的图数据库dsc - 数据库连接工具包,支持 SQL, NoSQL 及结构化文件 dynaGo - DynaGo 是一个符合最小惊奇原则(principle of least surprise)的 DynamoDB 客户端
Go-couchbase - Go 语言 Couchbase 客户的Go-couchdb - 另一个 CouchDB HTTP API 的 Go 语言封装Gocb - 官方 Couchbase 的 Go 语言 SDKGocql - Apache Cassandra 的 Go 语言驱动Gomemcache - memcache 客户端库Gorethink - RethinkDB 的 Go 语言驱动Goriak - Riak KV 的 Go 语言驱动mGo - MonGoDB 驱动,通过简单的 API 实现了丰富的、经过测试的特性,这些 API 遵循 Go 语言的习惯neo4j - Neo4j Rest API 的 Go 语言接口Neo4j-Go - Go 语言实现的 Neo4j REST 客户端neoism - Go 语言 Neo4j 客户端rediGo - RediGo 是 Redis 数据库的 Go 语言客户端.redis - Redis 的 Go 语言客户端redis - 简单、强大的 Redis 客户端redis - 兼容Redis协议的 TCP 服务器/服务.xredis - 类型安全的、可定制的、简洁易用的 Redis 客户端
搜索及分析数据库 bleve - 现代文本索引库elastic - Go 语言的 Elasticsearch 客户端elasticsql - 将 sql 转换为 elasticsearch dslelastiGo - Elasticsearch 客户端库Goes - 用于和 Elasticsearch 交互的库skizze - 概率相关数据结构服务和存储
处理日期和时间的库carbon - 简单的时间扩展程序,有很多有用的方法,是 PHP Carbon 库的接口durafmt - 持续时间格式化feiertage - 一组计算德国公共假期的函数,比如复活节、感恩节等Go-persian-calendar - 太阳历Goweek - 处理星期的库now - Now 是一个 Go 语言的时间工具集NullTime -时间可以是 NULL 的库timeutil - 为 Go 语言时间包扩展了有用的功能,例如时间间隔和格式化
用于构建分布式系统的库celeriac - 利用 Go 语言对Celery 的 worker,任务,事件进行交互和监控的库drmaa -集群调度工具的任务提交库,基于标准 DRMAA flowgraph - MPI 风格的读取,发送协同层gleam - 快速、可扩展的分布式 map/reduce 系统,使用纯 Go 语言和 Luajit 编写,融合了 Go 语言的高并发能力和 Luajit 的高性能,可以独立或分布式部署运行。glow - 简单易用、可扩展的大数据处理能力,Map-Reduce 以及执行 DAG(Database Availability Group),所有功能均由Go语言编写.Go-jump - Google "Jump" 一致性哈希函数的借口Go-kit - 为服务工具吧,支持服务发现、负载均衡 、可插拔传输以及请求追踪等Gorpc - 简单、快速、可扩展的 RPC 库,针对高负载场景grpc-Go - Go 语言实现的 gRPC. HTTP/2 基于 RPC.hprose - 非常牛逼的 RPC 库,当前支持 25+ 语言。jsonrpc - jsonrpc 包实现了 JSON-RPC 2.0.jsonrpc - JSON-RPC 2.0 HTTP 客户端实现KrakenD - 带有中间件的,高性能 API 网关框架micro - 微服务工具套件和分布式系统平台NATS - 轻量级、高性能微服务系统,用于微服务、物联网以及云raft - Raft 一致性协议的 Go 语言实现, 作者是 HashiCorp.raft - Raft 一致性协议的 Go 语言实现, 作者是 CoreOS.ringpop-Go - 可扩展、容错的应用层分片库rpcx - rpcx是一个类似阿里巴巴 Dubbo 和微博 Motan 的分布式的 RPC 服务框架sleuth - 在 HTTP 服务之间进行无主 p2p 自动发现和 RPC通信(使用 ZeroMQ).tendermint - 一个高性能的中间件,用于将任何语言编写的状态机转换为一个拜占庭容错状态机,使用Tendermint 一致性及区块链协议torrent - BitTorrent 客户端dht - BitTorrent Kademlia DHT 的实现.Go-peerflix - 视频流 torrent 客户端
用于创建和发送电子邮件的库douceur - HTML 邮件中的内联 CSSemail - 一个健壮的、灵活的 email 库Go-dkim - DKIM 库,用于对 email 进行签名和验证Go-imap - IMAP 库,用于客户端和服务器Go-message - 用于触雷互联网消息格式和邮件的库Gomail - Gomail 是一个非常简单且强大的库,用于发送电子邮件Hectane - 轻量级 SMTP 客户端,提供 HTTP APIhermes - 一个用于生成干净、响应式 HTML e-mail 的包MailHog - Email 及 SMTP 测试工具,具有 web 及 API 接口SendGrid - SendGrid 的 Go 语言库,用于发送电子邮件smtp - SMTP 服务器协议状态机
在你的 Go 代码中嵌入其他语言.aGora - 一种动态类型的可以嵌入 Go 中的编程语言anko - Go 语言编写的解释器binder - Lua 接口, 基于 Gopher-luagisp - Simple LISPGo-duktape - Duktape JavaScript 引擎的 Go 语言接口Go-lua - Lua 5.2 虚拟机的纯 Go 语言接口Go-php - PHP 的 Go 语言接口Go-python - CPython C-API 的 Go 语言接口Golua - Lua C API。的 Go 语言接口Gopher-lua - Go 语言编写的 Lua 5.1 虚拟机和编译器ngaro - 可嵌入的 Ngaro 虚拟机实现,支持在 Retro 中使用脚步otto - Go 编写的 Javascrip 解释器purl - 嵌入 Go 语言的 Perl 5.18.2
用于处理文件和文件系统的库afero - 一个文件系统的抽象系统Go-csv-tag - 使用 tag 导入 csvGo-gtfs - 加载 gtfs 文件notify - 文件系统提示库,具有简单的 API ,类似 os/signal.skywalker - 允许你简单方便的并发浏览文件系统tarfs - 为 tar 文件实现的 FileSystem 接口
会计及财务库accounting - 金钱及货币格式decimal - 任意精度、固定点十进制数Go-finance - 使用 Go 语言来理解财务市场数据Go-money - Fowler 金钱模型的实现ofxGo - 查询 OFX 服务器并解析其响应 (有一个示例的命令行客户端)vat - VAT 验证及欧洲增值税率工具
操作表单的库bind - 将表单数据绑定到任意的 Go 变量上binding - 将来自 net/HTTP 请求的表单、JSON 数据绑定到结构体conform - 检查用户输入并基于结构标签来清理数据form - 解码 url 中的数据到 Go 语言变量中以及将 Go 语言变量编码进 url 支持Dual Array 及 Full mapformam - 将表单数据解码到结构体forms - 框架无关的表单/JSON数据解析验证库,支持多部分表单及文件Gorilla/csrf - 为 Go 语言 web 应用提供 CSRF 防御nosurf - CSRF 防御中间件
超赞的游戏开发库Azul3D - Go 语言编写的 3D 游戏引擎Ebiten - Go 语言编写的简单的 2D 游戏库enGo - EnGo 是一个开源的 2D 游戏引擎,遵循实体-组件-系统范式GarageEngine - 2d 游戏引擎,利用 OpenGL 工作glop - Glop (Game Library Of Power) 是一个很简单的跨平台游戏库Go-astar - Go 语言实现的 A* 寻路算法Go-collada - 操作 Collada 文件格式的 Go 语言库Go-sdl2 - Simple DirectMedia Layer的 Go 语言接口Go3d - 专注性能的 2D/3D 数学库Gonet - Go 语言实现的游戏服务器框架Leaf - 轻量级游戏服务器框架Pixel - 手工 2D 游戏引擎库raylib-Go - raylib的 Go 语言接口,简单、易用的用于学习游戏编程的库termloop - 终端游戏引擎,基于 Termbox
一些增强语言的功能的工具例如通过代码生成支持泛型efaceconv - 代码生成工具,用于高效的将 interface{} 转换为不可变类型,不需要进行任何内存分配gen - 代码生成工具,用于提供类似泛型的功能Go-linq - 类似 .NET LINQ 的查询方法interfaces - 命令行工具,用于生成接口定义jennifer - 不适用模板生成任意 Go 语言代码pkgreflect - 用于包作用域反射的 Go 语言预处理器
用于把 Go 语言编译为其他语言的工具Gopherjs - 把 Go 编译为 JavaScript.llGo - 基于 LLVM 的 Go 语言编译器tardisGo - Golang 转换为 Haxe 进而转换为 CPP/CSharp/Java/JavaScript 的编译器.
用于管理和处理Go 语言协程的工具Go-floc - 轻松编排 Go 语言协程Go-flow - 控制 Go 语言协程的执行顺序Goworker - Goworker 是一个基于 Go 语言的后台workergrpool - 轻量级 Go 语言协程池pool - 有限消费者协程或无限协程池,用于简单的处理协程和取消协程semaphore - 实现了信号量模式,提供了超时锁定、解锁操作,基于通道和上下文。tunny - Go 语言协程池
用于构建 GUI 程序的库
工具包app - 使用Go, HTML 和 CSS 进行应用程序开发的库 支持 MacOS, Windows in progress.Go-astilectron - 使用 Go 以及 HTML/JS/CSS 构建应用程序. (基于Electron)Go-gtk - GTK 的 Go 语言接口Go-qml - QML 对 Go 语言的支持Go-sciter - Sciter 的 Go 语言接口 : 支持现代 GUI 程序开发的、嵌入式 HTML/CSS/脚本 引擎。跨平台。Goqt - Qt的 Go 语言接口Gotk3 - GTK3 的 Go 语言接口Gowd - 使用 Go, HTML, CSS 和 NW.js 语言进行快速、简单的桌面 UI 开发。跨平台qt - Qt 的 Go 语言接口 (支持 Windows / macOS / Linux / Android / iOS / Sailfish OS / Raspberry Pi)ui - 平台原生 GUI 库。跨平台walk - windows 应用程序开发工具包
交互Gosx-notifier - OSX 桌面提醒库robotGo - 跨平台 GUI 自动化;控制鼠标、键盘及其他设备systray - 一个跨平台的 Go 语言库,用于在桌面提醒区域放置按钮及菜单trayhost - 一个跨平台的 Go 语言库,用于在主机系统任务条区域放置按钮及菜单
库、工具以及教程,讲解如何操控硬件
参见 Go-hardware 获取更加全面的信息
用于操作图像的库bild - 汇集了使用 Go 语言编写的图像处理算法bimg - 利用 libvips 进行快速高效的图像处理geopattern - 从字符串创建优美的图样gg - 使用 Go 编写的 2D 渲染程序gift - 一组图像处理滤波器Go-cairo - cairo 图形库的 Go 语言接口Go-gd - GD 库的 Go 语言接口Go-nude - 使用 Go 语言进行裸替检测Go-opencv - OpenCV 的 Go 语言接口Go-webcolors - webcolors 库的 Go 语言接口imagick - ImageMagick 的 MagickWand C 语言 API 的 Go 语言接口imaginary - 快速且简单的 HTTP 微服务,用于图像缩放imaging - 简单的 Go 语言图像处理包img - 图像操作工具精选集ln - 3D 图线艺术渲染mpo - MPO 3D 照片解码与转换工具.picfit - 一个使用 Go 语言编写的图片缩放服务器pt - 光线追踪引擎resize - 使用 Go 语言编写的具有常见差值功能的图片缩放工具rez - 纯 Go 及 SIMD 实现的图像缩放库smartcrop - 为任意图片进行剪裁的工具svGo - 用于生成 SVG 的 Go 语言库tga - tga 是一个 TARGA 图像格式解码/编码器go-qrcode - QR Code 编码器(Go语言实现)
用于为物联网设备编程的库.connectordb - 开源个人数据及物联网平台devices - 物联网设备套件库eywa - Eywa 是一个持续追踪所有连接设备的连接管理器floGo - FloGo 是一个用于物联网 Edge App 及集成的开源框架gatt - Gatt 是一个用于创建低功耗蓝牙外设的库Gobot - Gobot 是一个用于机器人,物理计算以及物联网的库mainflux - 工业网物联网消息及设备管理服务器sensorbee - 轻量级物联网流处理引擎
用于生成和操作日志文件的库.glg - glg 是一个简单、快速、分级的日志库glog - 分级记录日志的库Go-cronowriter 对日志文件进行自动循环写入的库基于当前日期和时间,类似 cronolog.Go-log - 支持多处理器及日志分级的库Go-log - Go 语言实现的 Log4jGo-logger - 支持日志分级的简单的日志工具Gologger - 简单易用的日志库,可以在彩色控制台、简易控制的、文件或 Elasticsearch 中记录Gomol - 支持多种输出,结构化的日志模块,可以扩展它的输出Gone/log - 快速、可扩展、全功能、兼容标准库的日志库log - 结构化日志库log - 简单、可配置、可扩展的结构化日志库log-voyage - 全功能日志saas 使用 Go 语言编写log15 - 简单强大的日志库logdump - 支持分级的日志库logex - Go 语言日志库,支持追踪和分级,基于标准库进行了封装logger - 一个极简的日志库logrus - 支持结构化的日志工具.logrusly - logrus 的插件,用于将错误发送到 Loggly.logutils - 对 Go 语言标准日志工具进行了扩展,使其更好用logxi - 十二要素 app 日志工具,非常快速,令你开心lumberjack - 简单的循环日志工具,实现了 io.WriteCloser.mlog - 一个简单的日志模块,可以分5级并有一个可选的循环日志文件记录功能,支持 stdout/stderr 输出.ozzo-log - 高性能日志库,支持日志严重级别、分类及过滤。可以将过滤后的信息发送到不同的目的地(例如: 控制台、网络、邮箱).seelog - 一个灵活的、解耦的、格式化的日志库slf - 简单日志门面(The Structured Logging Facade (SLF) ) (类似 SLF4J,但是它是结构化的,并且专为 Go 语言设计)slog - 为 Go 语言实现的结构化日志门面(Structured Logging Facade (SLF) )spew - 为 Go 语言的数据结构实现了一个整洁的打印功能,有助于调试stdlog - Stdlog 是一个面向对象的库,提供了分级日志功能,对于定时任务很有用.tail - 这个 Go 语言软件包力争模拟 BSD tail 的功能xlog - 插件架构以及灵活的日志系统,具有日志等级控制,多日志目标以及自定义日志格式功能xlog - 结构化日志 for net/context aware HTTP handlers ,可以灵活的分发zap - 快速的、结构化的、分级的日志库zerolog - 零分配 JSON 日志.
机器学习库bayesian - 贝叶斯分类器CloudForest - 纯 Go 语言编写的快速、灵活、多线程决策树gaGo - 多种群,灵活的,并行的遗传算法Go-fann - 快速人工神经网络库(FANN)的 Go 语言借口.Go-galib - Go 语言编写的遗传算法库Go-pr - Go 语言模式识别库Gobrain - Go 语言编写的神经网络Godist - 多种概率分布及相关方法Goga - Go 语言遗传算法库GoLearn - Go 语言通用机器学习库Golinear - liblinear 库的 Go 语言接口Goml - 即时go语言机器学习库GoRecommend - Go 语言推荐算法库GorGonia - 基于图的计算库,类似于 Theano。提供了一些原型用于构建各种个样的机器学习和神经网络算法libsvm - libsvm 的 Go 语言版本,基于 LIBSVM 3.14.mlGo - 这个项目点目标是在 Go 语言中提供极简的机器学习算法neat - 即插即用的并行 Go 语言框架,用于增强拓扑神经网络 (NEAT).neural-Go - Go 语言实现的多层感知神经网络,通过反向传播算法进行训练.probab -概率分布函数、贝叶斯推理。使用纯 Go 语言编写reGommend - 推荐系统及协同过滤引擎shield - 贝叶斯文吧分类器,包含灵活的分词器和存储后端
实现了消息系统的库CentrifuGo - 实时消息服务器dbus - D-Bus的 Go 语言接口drone-line - 通过软件包,docker 或是 Drone CI来发送 Line 通知emitter - 通过Go语言的方式发送事件消息,可以使用通配符,断言,取消发送等优秀特性EventBus - 轻量级事件库,支持异步gaurun-client - Go 语言编写的 Gaurun 客户端Glue - 健壮的 Go 和 Javascript Socket 库 (可以用来替代 Socket.io).Go-longpoll - 支持长轮询的发布与订阅Go-notify - 原生实现的桌面通知规范Go-nsq - NSQ 官方 Go 语言库Go-socket.io - Go 语言的 socket.io库 ,一个实时应用框架.Go-vitotrol - Viessmann Vitotrol 服务的 Go 语言客户端Gollum - 一个 n:m 的多路复用器,从不同的源汇聚消息并向目标进行广播Golongpoll - HTTP 长轮询服务器库,让 web 发布与订阅变的更简单.Goose - Go 语言实现的服务器端事件发送Gopush-cluster - Gopush-cluster 是一个 Go 语言实现的支持集群的comet服务(支持 websocket,和tcp协议)Gorush - 通知推送服务器,使用 APNs2 和 Google GCM.guble - 一个使用通知推送(Google Firebase Cloud Messaging, Apple Push Notification services, SMS)、websockets 、REST API 的消息服务器。提供了分布式操作和消息持久化特性machinery - 异步任务队列,基于分布式消息处理manGos - 纯 Go 语言实现的 Nanomsg ("Scalable Protocols") melody - 用于处理 websocket 会话的一个极简框架,包括广播和自动 ping/pong 处理NATS Go Client - 轻量级高性能发布订阅(publish-subscribe) 以及分布式消息队列系统,这个一个Go语言库.nsq-event-bus - 针对 NSQ 的主题和频道进行了简单的封装oplog - 原生的 oplog/replication 系统,用于 REST APIspubsub - 一个简单的 pubsub 软件包RapidMQ - RapidMQ 是一个轻量级,可靠的本地消息队列管理库sarama - 用于 Apache Kafka 的库Uniqush-Push - 基于 Redis 的统一推服务,用于服务器端向移动客户端推送消息zmq4 - ZeroMQ version 4的 GO 语言接口。也有适用于version 3 及 version 2的
一些暂时无法归类的库alice - GO 语言依赖注入容器archiver - 用于制作和解压 .zip 和 .tar.gz 文件的库和命令autoflags - 通过结构体自动定义命令行标记的go语言软件包avgRating - 利用 Wilson Score 方程计算平均分及评级banner - 在你的go语言应用中添加炫酷的横幅battery - 跨平台电源信息库bitio - 高度优化的比特级读写browscap_Go - Browser Capabilities Project的 GO 语言库conv - conv 提供了一种快速且符合直觉的 GO 语言类型转换datacounter - Greaders/writer/HTTP.ResponseWriter 计数器errors - 提供简单的错误处理Go-chat-bot - IRC、Slack、Telegram 聊天机器人Go-commons-pool - 通用对象池Go-multierror - 这个 Go 语言库用于将一系列的错误作为一个整体来显示Go-openapi - 一些用于处理和利用 open-api 的库集合Go-resiliency - GO 语言弹性模式Go-sarah - 用于构建聊天机器人的框架,支持 LINE, Slack, Gitter等等Go-shortid - 超短的、唯一的、非序列的、对 url 友好的 idGo-unarr - 解压缩库,可用于 RAR, TAR, ZIP 以及 7z 归档文件.Go.uuid - 全球唯一标示符的实现(UUID),同时支持生成和解析Gofakeit - Go 语言编写的随机数据生成器Goid - 生成和解析符合 RFC4122 规定的 V4 UUIDs.Gopsutil - 用于获取进程和系统资源利用率(cpu,内存,磁盘)的库,跨平台Gosms - 你本地的SMS 网关,可以用来发送 SMSGountries - 一个用来展示国家及其行政区划数据的库hanu - 用于编写 Slack 聊天机器人的库health - 简单易用、可扩展的健康检查库indiGo - 唯一id生成器,使用 Sonyflake 并通过Base58进行编码jobs - 持久化且灵活的后台任务库margelet - 用于创建 Telegram 聊天机器人的库secdl - Lighttpd ModSecDownload alGorithm ported to Go to secure download urls.slacker - 用于编写 Slack 聊天机器人的库,非常易用stats - 监控 Go 内存状态及系统状态,通过UDP将数据发送到任何地方uuid - 生成,编解码 UUIDs v1 ,具有快速的或或密钥级随机节点标识VarHandler - Generate boilerplate HTTP input and ouput handling.werr - Error Wrapper creates an wrapper for the error type in Go which captures the File, Line and Stack of where it was called.xkg - X Keyboard Grabberxstrings - 一些有用的字符串函数的集合
用于处理人类语言的库dpar - 基于变换的统计依赖关系解析器Go-eco - 相似性,相异性及距离度量;差异性,均匀度和不均匀度测量;物种多样性估计;群落线模型Go-i18n - 软件包及相关工具,用于处理本地化文本Go-mystem - Yandex.Mystem 的 CGo 接口, Yandex.Mystem 是一个俄语词汇形态学分析器Go-nlp - 在进行自然语言工作时用于处理离散概率分布一些工具,以及其他的一些有用的工具Go-stem - 波特词干算法的一个实现Go-unidecode - Unicode 文本音译为 ASCII 文本Go2vec - 利用 Go 语言读取和处理 word2vec Gojieba - 结巴分词的 Go 语言实现的 jieba ,结巴分词是一个用于中文的分词算法Golibstemmer - snowball libstemmer 库的 Go 语言接口,包括了对 porter 2 的支持Gounidecode - Go 语言的 Unicode 直译器 (通常称之为 unidecode) icu - icu4c C 库的 CGo 接口,包括了检测和转换函数。保证了 version 50.1 版本的兼容性libtextcat - libtextcat C 库的 CGo 接口。保证了version 2.2 版本的兼容性MMSEGo - Go 语言实现的 MMSEG (一个中文分词算法)nlp - 从字符串中提取特定的值并填充结构体paicehusk - Go 语言实现的 Paice/Husk 词干算法porter - Martin Porter 实现的 C 语言版本的 Porter 词干算法的 Go 语言接口,非常直观porter2 - 非常快速的 Porter 2 stemmer.prose - 文本处理库,支持词语切分、词性标记、命名实体提取等功能RAKE.Go - 快速自动关键字提取算法(Rapid Automatic Keyword Extraction:RAKE)的 Go 语言接口segment - 一个用于进行 Unicode 文本分割的库,实现了 Unicode Standard Annex #29中描述的功能sentences - 语句标记器:将文字段落转换为语句列表shamoji - shamoji 是一个Go语言编写的词过滤软件包snowball - Snowball 分词器的Go语言接口,提供了分词提取的功能 Snowball native.stemmer - Go 语言分词器软件包,包括了英语和德语分词器textcat - 基于 n-gram 的 Go 语言文本分类软件包,支持utf-8 和 raw 文本whatlangGo - Go 语言的自然语言检测包。支持84种语言和24种书写 (如拉丁,西里尔等书写系统)。when - 英语、俄语的自然语言日期、时间表达解析器,可以插入规则
用于在不同网络层工作的库arp - 实现了 ARP 协议,遵循 RFC 826.buffstreams - 简单易用的 protocolbuffer 数据流,基于 TCPcanopus - CoAP 客户端/服务器实现 (RFC 7252)dhcp6 - dhcp6 实现了一个DHCPv6 服务器,遵循RFC 3315.dns - 用于处理 DNS 的 Go 语言库ether - 跨平台 Go 语言库,用于发送和接收以太帧ethernet - ethernet 实现了IEEE 802.3 Ethernet II 帧以及IEEE 802.1Q VLAN 标签的组装和剥离.fasthttp - fasthttp 是一个快速的 HTTP 实现,是 net/http的10倍性能ftp - ftp 实现了一个 FTP 客户端,遵循 RFC 959.gev - 一个轻量、比标准库更快的基于 Reactor 模式的非阻塞 TCP 网络库,支持自定义协议,轻松快速搭建高性能服务器。Go-getter - 一个用于通过 URL 从多种源下载文件或目录的 Go 语言库Go-stun - Go 语言实现的 STUN 客户端 (RFC 3489 及 RFC 5389).Gobgp - Go 语言实现的BGPGolibwireshark - Golibwireshark 使用 libwireshark 库来解析 pcap 文件并且分析数据Gopacket - 用于报文处理的库Gopcap - libpcap的 Go 语言封装Goshark - Goshark 使用 tshark 来对 IP 报文进行解码并创建数据结构用于分析报文Gosnmp -用于执行 SNMP 操作的库Gotcp - 用于快速编写 tcp 应用的库grab - 管理文件下载的 Go 语言库graval - 试验性的 FTP 服务器框架jaziGo - JaziGo 是一个 Go 语言编写的工具,用于获取多种网络设备的配置.kcp-Go - KCP - 快速可靠的 ARQ 协议.kcptun - 超级简单、快速的 udp 通道,基于KCP 协议lhttp - 强大的 websocket 框架,可以更简单的构建你自己的 IM 服务器*linkio - 接口读写速度模拟器llb - 一个非常简单但快速的后端代理服务器。对于快速重定向到预定义域名很有用,无内存分配,响应速度快mdns - 简单的 mDNS (组播 DNS) 客户端/服务器库mqttPaho - Paho 客户端提供了一个 MQTT 客户端库,用于通过TCP, TLS 或 WebSockets 和 MQTT broker 建立连接portproxy - 简单的 TCP 代理,加入了对CORS 的支持publicip - publicip 库会返回你的公网 ip 地址 (互联网出口).raw - raw 允许你在设备驱动层读写网络接口的数据sftp - sftp 实现了https://filezilla-project.org/specs/draft-ietf-secsh-filexfer-02.txt.中描述的 SSH 文件传输协议ssh - 用于创建 SSH 服务器的高级 API (封装crypto/ssh).sslb - 一个超简单的负载均衡库,仅仅是一个为了获取一些性能目标的小项目tcp_server - 一个用于快速创建 tcp 服务器的库utp - Go uTP 微传输协议的实现water - 简单的 TUN/TAP 库winrm - Go WinRM 客户端,用于在 Windows 设备上远程执行命令xtcp - TCP 服务器框架,支持同时全双工通信。可以优雅的关闭,自定义协议
用于操作OpenGL的库.gl - OpenGL的 Go 语言接口glfw - GLFW 3 的 Go 语言接口Goxjs/gl - Go 语言跨平台 OpenGL 接口(OS X, Linux, Windows, browsers, iOS, Android).Goxjs/glfw - Go 语言跨平台 glfw 库,用于创建 OpenGL 上下文并接收事件mathgl - Go 语言 3D 数学库,专注于3D,受到 GLM 启发
实现对象关系映射或数据映射技术的库beeGo orm - 一个强大的 Go 语言 orm 框架,支持 pq/mysql/sqlite3.Go-pg - PostgreSQL ORM ,专注PostgreSQL 特定功能及性能Go-store - 简单快速的基于Redis 的键值对存储库Gomodel - 轻量级、快速的、类 orm 库,帮助你和数据库进行交互GoRM - 超棒的 Go 语言 ORM 库,对开发者非常友好Gorp - 关系持久的、类 orm 的 Go 语言库pop/soda - 数据库迁移、创建、ORM 等等,支持 MySQL, PostgreSQL, 以及 SQLite.QBS - 利用结构体进行标准查询,是一个 Go 语言 ORMreform - 一个更优秀的 ORM,基于非空接口和代码生成SQLBoiler - ORM 生成器。为你的数据库表单生成一个功能全面、快速的 ORMupper.io/db - 通过使用封装了成熟的数据库驱动的适配器,来使用单一接口与不同的数据源进行交互Xorm - 简单、强大的 Go 语言 ormZoom - 超快的数据存储于查询引擎,基于 Redis 构建
用于进行包和依赖管理的库dep - Go 语言依赖工具.giGo - 类似 PIP 的依赖管理工具。支持私有仓库和哈希glide - 轻松管理你的 GO 语言包发布者以及发布包。 受到类似 Maven, Bundler, 和 Pip 这些工具的的启发Godep - Go 语言依赖工具,Godep 可以帮助开发者修复库的依赖关系Gom - Go ManagerGoop - 简单的依赖管理工具,手到 Bundler 的启发Gopm - Go 包管理器Govendor - Go 包管理器。 Go 语言 vendor 工具,兼容标准 vendor 文件gpm - Go 语言包管理工具gvt - gvt 是一个简单的发布管理工具(aka Go15VENDOREXPERIMENT), 基于 gb-vendor.johnny-deps - 极简的依赖版本管理工具,使用 gitnut - Go 语言依赖管理VenGo - 创建并管理可以导出的,隔离的 Go 语言虚拟环境graphql - graphql 解析器 + 实用工具graphql - Go 语言实现的 GraphQLgraphql - 专注于易用性的 GraphQL 服务器graphql-Go - 为 Go 语言实现的 GraphQLjsonql - JSON 查询表达式库esc - 在 Go 语言程序中嵌入文件并为其提供 HTTP.FileSystem 接口fileb0x - 一个用于在 Go 语言程序中嵌入文件的工具,专注于可定制化和易用性Go-bindata - 一个用于将文件转换为可管理的 Go 语言代码的工具Go-embed - 生成用于嵌入资源文件到库或可执行文件的 Go 语言代码Go-resources - 一个简洁的 Go 语言资源嵌入工具Go.rice - Go.rice 是一个让你轻松使用 html,js,css,图片以及模板这类资源的库statics - 将静态资源嵌入到 Go 文件中,用于单独二进制编译+使用http.FileSystem + symlinks.statik - 将静态文件嵌入到 Go 语言可执行文件中templify - 将外部目标文件嵌入到 Go 代码中来创建单独的二进制文件vfsgen - 生成一个 vfsdata.Go 文件,静态实现了一个虚拟文件系统
用于科学计算和数据分析的库blas - BLAS (基础线性代数子程序 Linear Algebra Subprograms)的 Go 语言实现chart - 简单的图表绘图库。支持多种图表类型evaler - 简单浮点算数表达式求值器ewma - 指数移动加权平均值geom - 2D 几何Go-dsp - 数字信号处理Go-fn - 一些没有包含在 math pkg 中的数学函数Go-gt - 图论算法Go.matrix - 线性代数Gocomplex - 复数库Gofrac - Go 语言分数库,支持基本算术Gohistogram - 数据流的近似直方图Gonum/mat64 - 矩阵计算通用包。 mat64 提供了用于进行64位浮点基础线性代数操作的功能Gonum/plot - Gonum/plot 提供了用于创建和绘制图表的 APIGoraph - 纯 Go 语言编写的图论库(数据结构,算法可视化)Gostat - 统计库graph - 包含基础图算法的库ode - 普通微分方程 (ODE) 求解器。支持扩展状态及基于通道的迭代算法终止条件pagerank - Go 语言实现的加权网页排名( PageRank)算法PiHex - 贝利-波尔温-普劳夫公式("Bailey-Borwein-Plouffe")算法的实现,用于计算十六进制πstats - 统计库,包含一些 Go 语言标准库中漏掉的常用函数streamtools - 通用图形化工具,用于处理流数据vectormath - 给 Go 语言用的 Vectormath , 是对索尼的矢量数学库中 C 语言函数的改写,可以在 Bullet-2.79 源码中找到 (当前不活跃)
可以帮助你增强应用程序安全性的库acmetool — ACME (Let's Encrypt) 客户端工具,有自动延长功能.BadActor - 一个驻留在内存中的,应用驱动的监控程序,受 fail2ban 的启发Go-yara - YARA的 Go 语言接口,号称是 "对于恶意软件研究者(以及其他人)来说是模式匹配的瑞士军刀leGo - 纯 Go ACME 客户端库及命令行工具memguard - 一个用于处理内存中敏感数据的 Go 语言库passlib - 不过时的密码哈希库secure - Go 语言 HTTP 中间件,为 Go 提供了一些安全功能simple-scrypt - Scrypt 库,具有简单、易懂的 API,同时具有内置的自动校准功能ssh-vault - 利用 ssh 秘钥加解密
用于进行二进制序列化的库和工具asn1 - Asn.1 BER 及 DER 编码库colfer - 用于生成 Colfer 二进制格式代码Go-capnproto - Go 语言用的 Cap'n Proto 库及解析器 bambam - 用于 Go 语言生成 Cap'n Proto schemas 的生成器Go-codec - 高性能、多功能、规范化编码解码以及 rpc 库, 用于 msgpack, cbor 和 json,支持基于运行时的 OR 码生成GoGoprotobuf - Go 语言的 Protocol Buffer 库Goprotobuf - 通过库和协议编译器插件使 Go 语言支持 Google的 protocol buffers.jsoniter -高性能,100% 兼容的"encoding/json" 替代品mapstructure - 用于对原生键值对进行解码生成 Go 语言结构体php_session_decoder - 用于协同 PHP session 格式数据和 PHP 序列化/反序列化函数工作的go语言库structomap - 用于从静态结构体简单、动态的生成键值对的库algernon - HTTP/2 web 服务器,支持 Lua、Markdown、GCSS 和 Amber.Caddy - Caddy 是一个备选的 HTTP/2 web 服务器,配置简单,使用方便。consul - Consul 是一个用于服务发现、监控和配置的工具devd - 开发者使用的本地 web 服务器etcd - 高可用性的键值存储,用于分享配置和服务发现minio - Minio 是一个分布式对象存储服务器nsq - 一个实时的分布式消息平台yakvs - 小型化、网络化、基于内存的键值存储
模板库及工具ace - Ace 是一个 Go 语言的 HTML 模板引擎,受到了 Slim 和 Jade 的启发。 Ace 是对Gold的一种改进。amber - Amber 是一个优雅的模板引擎,受到 HAML 和 Jade的启发damsel - 标记语言,通过css选择器实现了 html 框架 ,并可以通过 pkg html/template 等进行扩展eGo - 轻量级模板语言,让你可以使用 Go 语言来创建模板。模板会被转化为 Go 语言并编译fasttemplate - 简单快速的模板引擎。进行模板元素替换时,速度是text/template的十倍Gofpdf - PDF 文档生成器,支持文本,绘图和图片grender - 对 html/template 进行了简单的封装,支持基于文件的模板可以利用其他模板文件进行扩展hero Hero 是一个趁手的、快速的、强大的 Go 语言模板引擎jet - Jet 模板引擎kasia.Go - 一个用于HTML 和其他文本文件的模板系统,使用go语言实现liquid - Go 语言实现的 Shopify Liquid 模板.mustache - Go 语言实现的 Mustache 模板语言ponGo2 - 类似 DjanGo 的模板引擎quicktemplate - 快速、强大且易用的模板引擎。将模板转化为 Go 语言并进行编译raymond - 使用 Go 语言实现的完整的 handlebarsGoRazor - Go 语言的 Razor 视图引擎Soy - Go 语言实现的谷歌闭包模板(也就是 Soy templates) , 参见official specvelvet - 使用 Go 语言实现的完整的 handlebars
测试及用于生成测试数据的库.测试框架 assert - 基础断言库,用于对 Go 语言程序进行测试,提供了一些用于自定义断言的代码块badio - Go 语言 testing/iotest 包的扩展baloo - 表达性强、多功能的、端到端的HTTP API 测试工具bro - 监控目录中的文件并对其进行测试dbcleaner - 清空数据库用于测试,受到database_cleaner 的启发dsunit - 数据库测试,针对 SQL、 NoSQL、 结构化文件.frisby - REST API 测试框架ginkGo - BDD 测试框架Go-carpet - 用于在终端中查看测试覆盖率的工具Go-mutesting - Go 语言源代码突变测试(Mutation testing )Go-vcr - 记录并重放 HTTP 交互,用于快速的、确定性的、准确的测试Goblin - 类似 Mocha 的测试框架Gocheck - 更加高级的测试框架,用于替换 Gotest.GoConvey - BDD 风格的测试框架,具有 web 界面和计时刷新功能Godog - 类似 Cucumber 或 Behat 的 BDD 框架Gofight - 对 Go 语言的路由框架进行 API 测试Gomega - 类似 Rspec 的 matcher/assertion 库GoSpec - BDD 风格的测试框架Gospecify - 支持 BDD 语法 。对于任何使用过 rspec 等库的人来说应该非常熟悉Gosuite - 轻量级测试套,为 Go1.7's Subtests 带来了setup/teardown 功能Hamcrest - fluent framework for declarative Matcher objects that, when applied to input values, produce self-describing results.httpexpect - 简洁的、声明式的、易用的端到端HTTP 及 REST API 测试restit - 帮助编写 RESTful API 集成测试的 Go 语言微型框架.testfixtures - 类似 Rails 的测试工具,用于测试数据库应用Testify - 对标准测试包的扩展wstest - Websocket 客户端,用于对于 websocket HTTP.Handler 进行单元测试
Mock counterfeiter - 用于生成自包含 mock 对象的工具Go-sqlmock - Mock SQL ,用于测试数据库交互Go-txdb - 基于单事物的数据库驱动,主要用于测试目的Gock - 多功能、易用 HTTP mockGomock - 给 Go 语言用的 Mock框架Govcr - HTTP mock : 离线测试时记录和重放浏览器的动作minimock - Mock 生成器mockhttp - Go HTTP.ResponseWriter 使用的 Mock 对象
Fuzzing and delta-debugging/reducing/shrinking Go-fuzz - 随机化测试系统Gofuzz - 用于生成随机值来初始化 Go 语言对象的库Tavor - 通用模糊测试框架
Selenium 及浏览器控制工具 cdp - 类型安全的 Chrome debug协议的 Go 语言接口,可以用于浏览器或任何实现了该协议的其他待调试对象chromedp - 用于驱动和测试 Chrome, Safari, Edge, Android Webviews, 以及其他支持 Chrome 调试协议的产品ggr - 一个轻量级服务器,可以将 Selenium Wedriver 的请求路由或代理到多个 Selenium hubs.selenoid - Selenium hub 服务器的替代品,在容器中启动浏览器
解析和操作文本的库特殊格式 allot - 占位符及通配符文本解析bbConvert - 将 bbCode 转换为 HTMLblackfriday - Markdown 解析器bluemonday - HTML 清理工具editorconfig-core-Go - Go 语言用的Editorconfig 文件解析和操作库enca - libenca的极简的 cGo 接口genex - 计算并展开正则表达式为所有匹配的字符串github_flavored_markdown - GitHub 风格的 Markdown 渲染器 (使用 blackfriday) ,支持代码块高亮以及可点击的锚点Go-humanize - 时间、数字及内存大小格式化工具Go-nmea - NMEA 解析库Go-pkg-rss - 这个库可以读取 RSS 以及 Atom feeds,并且提供了一种缓存机制,遵守 feed 标准。Go-runewidth - 用于获取字符或字符串固定宽度的函数Go-slugify - 生成漂亮的固定链接地址(slug),支持多种语言Go-vcard - 解析并且格式化vCardGofeed - 使用 Go 语言解析RSS 和 AtomGographviz - 用以解析 Graphviz DOT 语言Gommon/bytes - 格式化二进制为字符串Gonameparts - 将人名解析为几个独立的部分Goq - 声明式 HTML 编组,使用结构标签和 jQuery 语法 (使用 GoQuery).GoQuery - GoQuery 为 Go 语言带来了一组类似 jQuery 的语法和功能Goregen - 根据正则表达式生成随机字符串Gotext - GNU gettext 工具guesslanguage - 通过一个 unicode 文本来猜测该文本使用的语言inject - inject 提供来一个基于反射对注入器mxj - 将 XML 编解码为 JSON 或 map[string]interface{}; 通过点分路径和通配符来提取值。用于替代Replaces x2j 和 j2x 包.sh - Shell 解析器及格式化工具slug - URL 友好的 slug 化工具,支持多种语言Slugify - Go 语言静态地址生成器,可以处理字符串toml - TOML 配置格式 format (encoder/decoder with reflection).
工具 Gotabulate - 使用 Go 语言简单、美观的打印表格数据kace - 通用大小写转换工具parseargs-Go - 字符串参数解析器,能够理解引用及反斜杠parth - URL 路径分割解析radix - 快速的字符串排序算法xurls - 从文本中提取 URL
用于访问第三方 APIs 的库amazon-product-advertising-api - Amazon Product Advertising API 的 go 语言客户端anaconda - Twitter 1.1 API 的 go 语言客户端aws-sdk-Go - AWS 提供的官方go语言 SDKbrewerydb - 用于访问 BreweryDB API的 Go 语言库cachet - Cachet (open source status page system)的 Go 语言客户端circleci - 用于和 with CircleCI's API 进行交互的 Go 语言客户端clarifai - 用语和 Clarifai API 交互的 Go 语言库discordGo - Discord Chat API 的 Go 语言接口facebook - 支持 Facebook Graph API 的库fcm - Firebase Cloud Messaging 的 Go 语言库gads - Google Adwords 非官方 APIgami - Asterisk Manager Interface 的 Go 语言库gcm - Google Cloud Messaging 库geo-Golang - 用于与 Google Maps, MapQuest, Nominatim, OpenCage, HERE, Bing, Mapbox, 及 OpenStreetMap 地理编码 / 反编码 APIs 交互的库ghost - 用于和 Snapchat API 交互的库github - 用于和 GitHub REST API v3 交互的库githubql - 用于和GitHub GraphQL API v4 交互的库Go-imgur - imgur 的 Go 语言客户端Go-jira - Atlassian JIRA 的 Go 语言客户端Go-marathon - 用于和 Mesosphere's Marathon PAAS 交互的 Go 语言库Go-myanimelist - 用于和 MyAnimeList API交互的库Go-telegraph - Telegraph 发布平台 API 客户端Go-tgbot - 纯 Go 语言的Telegram 机器人 API 封装,通过 swagger 文件,基会话的路由和中间件Go-trending - 用于获取 Github 上面 当前流行的代码库 及 开发者Go-twitch - 用于和推特v3 API 进行交互的 Go 语言客户端Go-twitter - 用于和推特v1.1 API 进行交互的 Go 语言客户端Go-unsplash - Unsplash.com API 的 Go 语言客户端Go-xkcd - xkcd API 的 Go 语言客户端Goamz - Goamz 的一个fork分支,添加了一些缺失的 API,用于调用特定的软件包。Golyrics - Golyrics 是一个 Go 语言库,用于从 Wikia 上获取歌词GoMusicBrainz - Go MusicBrainz WS2 客户端Google - 为go语言自动生成 Google apiGoogle-analytics - Google 分析报告的一个简单的封装Google-cloud - Google Cloud APIs Go 语言客户端库Google-email-audit-api - Google G Suite Email Audit API的 Go 语言客户端库Gostorm - GoStorm 是一个 Go 语言库,实现了在 Go 语言里面编写 Spout 和 Bolt 的协议,用于和 Storm shells 进行通信Govkbot - 简单的 Go VK 机器人库hipchat - 这个项目实行了Hipchat API 的 Go 语言客户端hipchat (xmpp) - 通过使用 XMPP 与 HipChat 进行通信的库Medium - Medium OAuth2 API 的 sdkmeGos - 用于访问 Apache Mesos 集群的客户端micha - 用于Telegram bot api的go语言库minio-Go - go 语言 Minio 客户端,用于 Amazon S3 兼容的云存储mixpanel - Mixpanel 是一个用于追踪事件并发送 Mixpanel profile 的更新到 Mixpanel 的库patreon-Go - Patreon API.paypal - PayPal 支付 APIplaylyfe - Playlyfe Rest API 的 Go 语言 SDKpushover - Pushover API 的 Go 语言封装rrdaclient - 用于接入 statdns.com API 的库——RRDA API。通过HTTP协议进行 DNS查询shopify - 一个用于通过 Shopify API 进行增删改查的 Go 语言库slack - Slack APIsmite - 对 Smite game API 的封装spotify - 用于接入 Spotify WEB API 的 Go 语言库steam - 用于与Steam服务器进行交互的库stripe - Stripe API 的 Go 语言客户端tbot - Telegram bot 服务器,有类似 net/http 的 apitelebot - go语言编写的 Telegram bot 框架telegram-bot-api - 简洁的 Telegram bot 客户端.textbelt - textbelt.com txt messaging API 的go语言客户端TheMovieDb - 用于和 themoviedb.org 通信的一个简单的 Go 语言软件包translate - Go 在线翻译包Trello - Trello API的 Go 语言封装tumblr - Tumblr v2 API 的 Go 语言封装webhooks - GitHub 和 Bitbucket 的Webhook接收器zooz - Zooz API 的 Go 语言客户端
可以让你的生活变得更简单的实用工具.abutil - 常用 Go 语言工具的集合apm - Go 语言进程管理工具具有HTTP API.boilr - 一个超快的命令行工具,用于从模板文件生成项目circuitbreaker - Go 语言断路器模式clockwerk - 使用简单、流畅的语法来调度周期性任务command - 命令模式,支持线程安全的串行、并行调度coop - Go 语言中常见的并发流程速查表copy-pasta - 通用多工作站剪切板,使用类似 S3 的后端作为存储ctop - 类似Top的接口 (例如 htop) ,用于容器数据收集Death - 利用信号管理应用程序的关闭Deepcopier - 结构体拷贝delve - Go 语言调试器dlog - 编译时控制的日志,让你的 release 包变得更小而不需移除 debug 调用excelize - 用于读写 Microsoft Excel (XLSX) 文件的库fastlz - FastLz (免费,开源,可移植实时压缩库) 的一个封装filetype - 通过数字签名来推测文件类型filler - 使用 "fill" 标记来填充结构体的小工具fzf - 命令行模糊查找工具generate - 针对一个路径或环境变量,递归的执行 Go generate,可以通过正则表达式来进行过滤gentleman - 全功能、插件驱动的 HTTP 客户端库git-time-metric - 简单、无缝、轻量级的 Git 时间追踪工具GJSON - 一行代码获取 JSONGo-astitodo - 解析你 Go 语言代码中的 TODOs(待办事项) Go-bind-plugin - Go:generate 工具,用于构建 Go 语言插件(1.8 only),并对导出的符号进行包装Go-cron - 简单的 Go 语言 Cron 库,可以以不同的时间间隔来执行闭包或函数,从一秒到某年某月某日都可以。主要针对的是 Web 应用或者长期运行的守护进程Go-debug - 条件调试日志,用于 Go 语言库和应用程序Go-dry - DRY (don't repeat yourself)Go-funk - 现代 Go 语言工具库,提供了很多有用的工具 (map, find, contains, filter, chunk, reverse, ...)Go-httpheader - 用于将结构体编码进 http 头的 Go 语言库Go-rate - Go 语言版本的限速器Go-respond - 用于处理常见 HTTP JSON 响应的库.Go-sitemap-generator - XML 网站地图生成器Go-torch - 为 Go 语言程序生成火焰图Go-trigger - Go 语言全局事件触发器,通过 id 和触发器,在程序的任何地方注册事件Go-underscore - 一些有用的 Go 语言工具的集合Goback - 一个 Go 语言的简单的指数补偿包Godaemon - 用于编写守护进程的工具Godropbox - 用于编写 Go 语言服务/应用的库,来自 Dropbox.Gohper - 多种能够帮助你进行软件开发的工具和模块Gojq - 通过 Go 语言进行 JSON 查询Gojson - 通过 JSON 自动生成 Go 语言结构体Golarm - 告警(支持系统事件)Golog - 简单、轻量级的命令后工具,用于对你的计划任务进行跟踪Gopencils - 简单小巧的 Go 语言库,能够很容易的使用各种 REST APIs.Goplaceholder - 一个小巧的 Go 语言库用于生成占位图片Goreleaser - 尽可能快速的发布 Go 语言二进制文件Goreporter - 进行代码静态分析,单元测试,代码检视并生成代码质量报告的工具Goreq - 简洁的 Go 语言 http 请求库Goreq - 更加简化的 http客户端,基于 Gorequest.Gorequest - 简化的 http 客户端,具有丰富的特性Goseaweedfs - conseilSeaweedFS 客户端,几乎具有全部的特性Gotenv - 从 .env 或者任何 io.Reader中加载环境变量Goxlsxwriter - 用于操作 XLSX (Microsoft Excel) 文件的 libxlsxwriter 库的 Go 语言接口gpath - 用于简化结构体域访问的库grequests - 简单优雅的 net/HTTP 封装,紧随 Python 的 requests 的步伐gron - 使用简单的 Go 语言 API 和 Gron 调度器创建定时任务htcat - 并行及流水线的 HTTP GET 工具httpcontrol - httpcontrol 包,运行进行 HTTP 传输层超时和重传控制hub - 封装了 git 命令,提供了额外的功能用于在终端中和 Github 进行交互hystrix-Go - 实现 Hystrix 风格的、程序员预定义的 fallback 机制(熔断)immortal - *nix 跨平台 (与操作系统无关的)监控程序intrinsic - 不需要编写任何汇编代码就能使用 x86 SIMDJobRunner - 智能的、多功能的定时任务调度器,具有任务队列和实时监控功能jsonapi-errors - JSON API errors 的 Go 语言接口.jsonf - 控制台工具,用于高亮及 JSON 查询功能jsonGo - 用于更加方便的构建 JSON 对象的 APIjsonhal - 一个简单的 Go 语言软件包,用于将自定义结构体转换为 HAL 兼容的 JSON 响应kazaam - 用于传输任意 JSON 文件的 APIlrserver - LiveReload 服务器mc - Minio Client 提供了一组工具,用于操作 Amazon S3 兼容云存储和文件系统merGo - 用于将结构体和map合并进 Go 语言的工具。对于配置默认值,避免杂乱的if语句很有帮助minify - 快速压缩 HTML, CSS, JS, XML, JSON 以及 SVG 文件格式mmake - 现代 Make 工具moldova - 基于输入目标生成随机数据的工具mp - 简单的命令行邮件解析器,当前支持标准输入并输出JSON.mssqlx - HA 客户端,用于主-从 (或主-主) 数据库,集成了简单的、轻量级的轮询调度负载均衡。基于 sqlx.multitick - 用于 aligned tickers 的多路复用netbug - 远程对你的服务进行性能分析ngrok - 创建到 localhost 的隧道okrun - 当 Go 文件运行报错时尝试修复并运行onecache - 支持多种后端存储的缓存库(Redis, Memcached, 文件系统等)panicparse - 将类似的协程分组并对调用栈进行着色peco - 简单的交互式过滤工具pester - Go HTTP 客户端,具有重传,补偿和并发功能pm - 基于 HTTP API 的进程管理 (i.e. Goroutine) profile - 一个简单的性能分析软件包rclient - 可读性良好、灵活、易用的 REST APIs 客户端realize - Go 语言构建系统,可以监控文件变化并重新加载。运行,构建,监控文件并支持自定义路径request - Go 语言版的 HTTP Requests for Humans™.rerate - 基于 Redis 的速率计数器和限速器rerun - 当源码变化时,重新编译并重新运行 Go 语言编写的 appresty - 简单的 HTTP 和 REST 客户端,受到 Ruby rest-client 的启发retry - 基于上下文的功能机制,反复执行命令直到成功robustly - 有弹性的执行函数,遇到错误时捕获并重新运行scheduler - 从容的进行 Cronjobs 任务调度sling - Go HTTP 请求构造器,用于 API 客户端spinner - 一个 Go 语言软件包,提供多种选项,方