内容包括:Web框架、模板引擎、表单、身份认证、数据库、ORM框架、图片处理、文本处理、自然语言处理、机器学习、日志、代码分析、教程和(电子)书等。
Awesome Go
这是一个精心策划的、包含大量优秀 Go 语言框架、库、软件的列表。本项目是受awesome-python启发。音频和音乐
用于操作音频的库
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 预处理器
用于对 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- 实现了布隆过滤器的库数据库
数据库迁移
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 驱动GofreetdsMicrosoft 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-集群调度工具的任务提交库,基于标准 DRMAAflowgraph- 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 编译器
用于把 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
用于构建 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 图像格式解码/编码器物联网
用于为物联网设备编程的库.
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- 结构化日志 fornet/contextaware 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和 GoogleGCM.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 语言读取和处理 word2vecGojieba- 结巴分词的 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.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
用于操作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 启发ORM
实现对象关系映射或数据映射技术的库
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 进行了简单的封装,支持基于文件的模板可以利用其他模板文件进行扩展heroHero 是一个趁手的、快速的、强大的 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 进行单元测试Mockcounterfeiter- 用于生成自包含 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/shrinkingGo-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
用于访问第三方 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.comAPI 的 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- 简单的 GoVK机器人库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 语言软件包,提供多种选项,方便在终端中创建加载动画sqlx- 为内建的数据库/sql 软件包提供一组扩展Storm- 一个用于 BoltDB 的简单又强大的工具Task- 简单来讲就是 "Make" 的替代品toolbox- 切片, map, multimap, 结构体, 函数,数据转换工具。服务路由,宏求值和标记器uGo- uGo 是一个切片工具箱,有着和 Go 语言一致的语法UNIS- Go 语言字符串处理函数的通用架构usql- usql 是一个通用的命令行接口,用于操作 sql 数据库util- 收集了很多有用的函数wuzz- 交互式命令行程序,用于进行 HTTP 检查xferspdy- Xferspdy 提供了二进制对比功能以及 Go 语言补丁库xlsx- 简化了在 Go 语言程序中读取 xml 格式文件的操作
验证
用于验证的库
Govalidator- 数据验证及清晰工具,用于字符串,数字, 数组切片及结构体ozzo-validation- 支持多种数据类型的验证 (结构体,字符串,键值对,数组切片等等),具有可配置、可扩展的验证规则——使用常用代码结构定义,而非结构体标签validate- 提供了一个用于为 Go 语言英语程序编写验证工具的框架validator- Go 结构体及域验证,包括:跨域、跨结构体, Map, 切片和数组版本控制
用于版本控制的库
gh- 用于 GitHub Webhooks 的可编程服务器以及 net/HTTP 中间件git2Go- libgit2 的 Go 语言接口Go-vcs- 通过 Go 语言来操作和检视 VCS 代码仓库hGo- HGo 是一个 Go 语言软件包集合,提供了对本地 Mercurial 仓库的读取能力.视频
用于操作视频的库
gmf- FFmpeg av* 库的 Go 语言接口.Go-astisub- 使用 Go 语言操作字幕(.srt, .stl, .ttml, .webvtt, .ssa/.ass, teletext, .smi, etc.).Goav- 易用的 FFmpeg Go 语言接口gst- GStreamer 的 Go 语言接口v4l- Linux 下使用的视频截图库,Go 语言编写Web 框架
全栈 web 框架
aah- 可扩展、高性能、快速发布的 Go 语言 web 框架Air- 理想的 RESTful web 框架BeeGo- beeGo 是一个开源的、高性能的 Go 语言 web 框架Buffalo- 为 Go 语言带来堪比 Rails 的高生产效率Echo- 高性能、极简的 Go 语言 web 框架Fireball- 感觉更加自然的 web 框架Florest- 高性能的、基于工作流的 REST API 框架Gem- 简单快速的 web 框架,对 REST API 很友好Gin- Gin 是一个 Go 语言编写的 web 框架!提供了一组类似 martini 的 API ,具有更好的性能(40倍)。如果你需要高性能和高生产率,这个框架很适合你Gizmo- 纽约时报正在使用对微服务工具集Go-json-rest- 快速、简单的创建 RESTful JSON API.Go-relax- 具有可插拔组建的框架,用于构建 RESTful API's.Go-rest- Go 语言 REST 框架中的小恶魔Goa- 用于开发微服务的框架,基于 Ruby 的 Praxis 的设计Goat- 极简的 REST API 服务器Golf- Golf 是一个快速、简单、轻量级的 Go 语言微型 web 框架。具有强大的功能且没有标准库以外的依赖Gondola- 用于快速编写高性能网站的框架Gongular- 快速 Go web 框架,支持输入映射/验证以及依赖注入Macaron- Macaron 是一个高效的模块化设计的web框架manGo- ManGo 是一个模块化 web 应用框架,受到 Rack 和 PEP333 的启发Microservice- 用于创建微服务的框架,使用 Go 语言编写neo- 是一个极小且快速的 Go 语言 web 框架,具有及其简单的 APIResoursea- 用于快速编写基于资源对服务的 REST 框架REST Layer- 用于构建在数据库之上构建 REST/GraphQL API 且大多数配置都可以通过代码完成Revel- go语言高生产率框架rex- Rex 是一个用于进行模块化开发的库,基于Gorilla/mux 完全兼容大多数的net/HTTP.sawsij- 轻量级、开源的 web 框架,用于构建高性能、数据驱动的web应用tanGo- 微型的、支持插件的 web 框架tigertonic- 用于构建 JSON web 服务的 Go 语言框架,受到 Dropwizard 的启发traffic- 受到 Sinatra 启发的 Go 语言 web 框架utron- 轻量级的go语言 MVC 框架violetear- Go HTTP 路由库YARF- 快速的微型框架,用于快速、简单地构建 REST APIs 以及 web 服务Zerver- Zerver 是一个富有表达力的、模块化的、全功能的 RESTful 框架.
Windows
d3d9- Direct3D9 的 Go 语言接口Go-ole- 为 Go 语言实现的 Win32 OLEXML
Libraries and tools for manipulating XML.
Go-pkg-xmlx- 对 Go 语言 XML 标准库的扩展。维护来一个节点树,允许前进和后退浏览以及一些简单的单/多节点搜索函数XML-Comp- 简单的命令行 XML 比较工具,可以生成关于目录、文件和标签对差异信息xmlwriter- Procedural XML 生成 API 基于 libxml2 的 xmlwriter 模块.xpath- XPath 库xquery- XQuery 使你可以从 HTML/XML文档中抽取数据和求值,使用 XPath 表达式中间件
中间件
CORS- 非常方便地向你的 api 中添加 CORS 功能formjson- 将 JSON 输入看作说一个标准的表单 POST 来处理Limiter- 超级简单的限速中间件Tollbooth- HTTP 请求限速中间件XFF- 处理X-Forwarded-For头的中间件
用于创建 HTTP 中间件的库
alice- 用于连接中间件的库,简单无痛苦catena- HTTP.Handler wrapper catenation (和chain具有相同的 API ).chain- Handler wrapper chaining with scoped data (net/context-based "middleware").Go-wrap- 小型中间件库,用于net/HTTP.Gores- 用于处理 HTML, JSON, XML 等。对于 RESTful APIs 很有用。interpose- 极简的 net/HTTP 中间件muxchain- 用于net/HTTP的轻量级中间件negroni- 符合语言习惯的 HTTP 中间件库render- 用于轻松渲染 JSON, XML, 及 HTML 模板响应的库rye- 小型 Go 语言中间件库 ,支持 JWT, CORS, Statsd, 及 Go 1.7 contextstats- Go 语言中间件,用于存储web应用的多种信息Volatile- 极简的go语言中间件技术栈,强调灵活性、优秀实践及简洁代码路由
alien- 轻量级、超快速的 HTTP 路由,来自外星科技Bone- 轻量级快速 Fast HTTP Multiplexer.Bxog- 为go语言编写的简单快速点 HTTP 路由。能够配合多种不同复杂度、长度和嵌套的路由工作。同时它能够根据接收到的参数创建 URLchi- 小巧、快速、具有丰富表达力的 HTTP 路由,基于net/context.fasthttprouter- 从httprouterfork出来的高性能路由,是第一个适配fasthttp的路由Gocraft/web- Mux 及中间件包Goji- Goji 是一个极简的、灵活的HTTP 请求数据分选器,支持net/context.GoRouter- GoRouter 是一个服务器/API 微型框架、HTTP 请求路由 router, 数据分选器,提供了支持net/context的中间件Gowww/router- 超快的HTTP 路由,完全兼容 net/HTTP.Handler 接口.httprouter- 高性能路由。使用这个库和标准http处理工具可以构建一个非常高性能大web框架httptreemux- 高速,灵活,基于树的 HTTP 路由。受到了 httprouter 的启发lars- 树一个轻量级、快速、可扩展、零分配的HTTP路由,用于创建定制化的框架medeina- Medeina是一个HTTP路由树,基于 HttpRouter 。基于 Roda 和 Cuba.mux- 强大的 URL 路由和分发库ozzo-routing- 一个极快的go语言http路由,支持正则路由匹配。完全支持创建 RESTful APIs.pat- Sinatra 风格的模式 muxer ,用于go语言 net/http库,由 Sinatra的作者编写。pure- 是一个轻量级http路由,严格符合标准"net/HTTP"实现Siesta- 具有可组合性的框架,用于编写中间件和 handlersvestiGo- 高性能、独立的、符合 HTTP 标准的 URL 路由,用于构建go语言web应用xmux- 高性能 muxer,基于httprouter,支持net/contextzeus- 非常简单快速的http路由
工具
Go语言软件及插件
代码分析
apicompat- 检测一个go语言项目最近的变化,用于监测不能向后兼容的改动dupl- 用于检测重复代码的工具errcheck- Errcheck 是一个用于检测go语言程序中未处理错误的程序gcvis- 实时地将 Go 语言垃圾回收进行可视化Go Metalinter- Metalinter 会自动应用全部的静态分析工具,并生成形式一致的分析报告Go-checkstylecheckstyle是一个代码风格检查工具,类似 java checkstyle 。这个工具就是受到 java checkstyle 和 Golint 的启发Go-cleanarch- Go-cleanarch 用于检查代码是否符合简洁架构的相关法则,比如依赖法则以及你的Go语言项目中各个库的交互情况Go-outdated- 这是一个命令行程序,用于显示过时的库Goast-viewer- 基于 Web 的 Golang AST 可视化工具.GoCover.io- GoCover.io 可以查看任何go语言软件包的代码覆盖率Goimports- 用于自动修复,添加,删除你的 Go 语言项目的 importGoLint- Golint 是一个针对 Go 语言源码的 lint 工具Golint online- 使用golint对GitHub, Bitbucket 以及 Google Project Hosting上面的 Go 语言源文件进行静态分析Goreturns- 添加零值 return 语句以符合函数返回值类型Gosimple- Gosimple 是一个针对 Go 语言的lint工具,专注于简化代码Gostatus- 命令行工具,查看当前 Go 语言软件包仓库的状态interfacer- 可以提供接口类型建议的 Lint 工具lint- 将lint作为go语言测试的一部分来执行staticcheck- staticcheck isGo veton steroids, applying a ton of static analysis checks you might be used to from tools like ReSharper for C#.unconvert- 从go语言代码中移除不必要的类型转换unused- unused 会检查 Go 语言代码中没有用到的常量,变量,函数和类型validate- 自动验证结构体类型
编辑器插件
Go plugin for JetBrains IDEs- JetBrains IDEs 使用的 Go 语言插件Go-lang-idea-plugin(废弃) - IntelliJ (JetBrains) IDEA 之前使用的插件,现在已经被上面的官方插件所取代Go-mode- GNU/Emacs的 Go 语言模式Go-plus- 供Atom 使用的自动补全、格式化、语法检查、lint 及 Vetting 的软件包Goclipse- Eclipse 的 Go 语言插件Gocode- go语言自动补全GoSublime- SublimeText 2 使用的 Go 语言插件,支持代码补全以及一些类似 IDE 的特性velour- acme 编辑器使用的 IRC 客户端vim-compiler-Go- Vim插件,在保存时高亮语法错误vim-Go- Vim 使用的 Go 语言开发插件vscode-Go- Visual Studio Code (VS Code) 使用的一个扩展,为 Go 语言提供了支持Watch- 当文件变动时,在 acme 窗口中执行命令Go 语言工具
colorGo- 对Go命令进行了封装,用于为Go build的输出结果添加颜色depth- 通过分析导入的库,将某个包的依赖关系用树状结构进行显示gb- 一个简单易用的基于项目的构建工具,用于 Go 语言Go-callvis- 使用 dot 语言将你的 Go 语言程序函数调用关系可视化Go-pkg-complete- Bash 代码补全,用于Go 和 wGo.Go-swagger- 为 Go 语言实现的Swagger 2.0, Swagger 是一个简单但强大的工具,用于展示你的 RESTful API.OctoLinker- 使用 github 的浏览器插件 OctoLinker 高效浏览 Go 语言文件rts- RTS(是response to struct的缩写)用于根据服务器的响应生成 Go 语言结构体
软件包
使用 Go 语言编写的软件
DevOps 工具
aptly- aptly 是一个 Debian 库管理工具aurora- 跨平台、基于web的 Beanstalkd 队列服务器控制台awsenv- 加载 Amazon (AWS) 环境变量作为 profile 文件Banshee- 异常检测系统,用于周期性数据测量bombardier- 快速的、跨平台的HTTP 基准工具.bosun- 时间序列告警框架doGo- 监控源文件中的变化并自动编译和执行drone-jenkins- 触发下游 Jenkins 任务, 可以通过二进制文件、 docker 或者 Drone CI来使用drone-scp- 通过 SSH 拷贝文件及可执行程序,可以通过二进制文件、 docker 或者 Drone CI来使用Dropship- 通过 cdn 部署代码的工具easyssh-proxy- 一个用于通过 ssh 远程执行命令以及通过ProxyCommand来进行 SCP 下载Gitea- Gogs的fork,完全社区驱动Go Metrics- Coda Hale 的 Metrics library的 Go 语言接口:https://github.com/codahale/metrics.Go-selfupdate- 让你的 Go 语言程序可以自我更新Gobrew- Gobrew 让你可以在不同版本的 Go 语言之间轻松切换Godbg- 基于 Web 的前端 gdb 应用程序Gogs- 自我托管的Git服务Gonative- 为 Go 语言创建可以在多平台进行交叉编译的工具,使用 CGo-enabled 标准库Govvv- 对“Go build”进行了封装,用于轻松的向 Go 语言二进制文件中添加版本信息Gox- 非常简单的 Go 语言交叉编译工具Goxc- Go 语言构建工具,专注于交叉编译和打包grapes- 一款轻量级工具,用于通过 ssh 发送命令GVM- GVM 提供了用于管理 Go 语言版本的接口Hey- Hey 是一个微型程序,用于向 web 应用发送一些載荷kala- 极简、现代的、高效的任务调度kubernetes- 来自 Google 的容器集群管理器Moby- 为容器生态系统创建的一个合作项目,用于构建基于容器的系统Mora- REST 服务器,用于获取 MonGoDB 文件和元数据ostent- 收集并显示系统数据,可以作 Graphite 和/或 InfluxDB 的中继Packer- Packer 通过单一的配置文件,为不同的平台创建独立机器镜像Pewpew- 灵活的 HTTP 命令行压力测试 工具Rodent- Rodent 帮助你管理 Go 语言版本,项目病追踪依赖s3Gof3r- 为了从 Amazon S3中高速存取大型对象而特别优化的库Scaleway-cli- 通过命令行来管理 BareMetal 服务器 (和使用 Docker 一样容易).sg- 对一组 HTTP 端点 (比如 ab)进行了基准测试, with possibility to use the reponse code and data between each call for specific server stress based on its previous response.StatusOK- 监控你的网站和 REST APIs。如果你的服务器挂了或是响应时间超过预期,则会通过 Slack, E-mail 来通知你Vegeta- HTTP 加载测试工具和库webhook- 允许用户创建 HTTP 端点,在服务器上执行命令Wide- 基于 Web 的 IDE,为使用 Go 语言的团队设计winrm-cli- 命令行工具,可以远程在 windows 机器上执行命令
其他软件
borg- 基于终端的搜索引擎,用于搜索 bash 代码 片段boxed- 基于Dropbox 的博客引擎Cherry- Go 语言实现的一个微型网络聊天服务器Circuit- Circuit 是一个可编程的 PaaS 以及 IaaS,用于管理、发现以及编排各种云端应用的服务及主机Comcast- 模拟不佳的网络连接confd- 使用 etcd 或 consul 的模板及数据管理本地应用的配置文件DDNS- 个人 DDNS 客户端,使用 Digital Ocean DNS 作为后端Docker- 一个为开发者和系统管理员提供的分布式应用开放平台Documize- 现代维基百科软件,可以继承 SaaS 工具提供的数据fleet- 分布式初始化系统Go Package Store- 一个可以显示你的 GoPATH 路径下 Go 软件包的更新的应用Gocc- Gocc 是一个用 Go 语言编写的 Go 语言编辑器工具集GoDocTooltip- 一个Chrome 浏览器扩展,可以在浏览 Go 语言文档时以工具提示的方式显示函数的描述信息Gogland- 跨平台、全功能 Go 语言集成开发环境Gor- Http 流量复制工具,用于将生产环境的流量在开发环境实施重现hsync- 文件系统同步工具huGo- 快速、现代的静态 web 引擎ipe- 开源 Pusher 服务器,Go 语言编写,兼容 Pusher 客户端,由 Go 语言编写JayDiff- Go 语言编写的JSON对比工具Juju- 服务部署及编排工具,,支持 EC2, Azure, Openstack, MAAS 等等Leaps- 结对编程服务,使用操作变换来避免冲突。limetextLime Text 是一个强大又优雅的编辑器,主要使用 Go 语言开发,意在成为 Sublime Text的继承者。LiteIDE- LiteIDE 是一个简单、开源、跨平台的 Go 语言 IDEmockingjay- 伪 HTTP 服务器,通过单一配置文件创建消费驱动。同时你还可以让服务器搞点事情,以进行更加符合现实情况的性能测试myLG- Go 语言编写的命令行网络诊断工具naclpipe- 简单的基于NaCL EC25519 的加密管道工具nes- Go 语言编写的任天堂娱乐系统(NES)模拟器orange-cat- Go 语言编写的 Markdown 预览工具peg- Peg(Parsing Expression Grammar)是一个 Packrat parser generator 的实现Postman- 一个批量发送邮件的命令行工具restic- 解耦备份程序rkt- App 容器运行时,集成了初始化系统,和其他容器兼容,比如 Docker,并且支持其他执行引擎,例如 KVMSeaweed File System- 快速、简单、可扩展的分布式文件系统,具有O(1)的磁盘查找效率shell2http- 通过 HTTP 服务器执行 shell 命令行(用于原型验证或远程控制).snap- 强大的遥测框架Stack Up- Stack Up 是一个超级简单的开发工具,就好比是服务器网络的 ‘make’ 工具syncthing- 开源、去中心化的文件同步工具和协议Tenyks- 面向服务的 IRC 机器人,使用 Redis 和 JSON 来发送消息toto- Go 语言编写的简单代理服务器,可以和浏览器一起使用toxiproxy- 模拟网络和系统状态的代理,用于自动化测试tsuru- 可扩展的、开源的 SAAS 软件vFlow- 高性能、可扩展、可靠的 IPFIX, sFlow 和 Netflow 集合.websysd- 基于 web 的进程管理工具(类似 Marathon 或 Upstart).wellington- Sass 项目管理工具, 通过支持一些功能(例如Compass)扩展了这门语言资源
可以找到新的 Go 语言库和软件的地方