Golang优秀开源项目汇总(持续更新。。。)
我把这个汇总放在github上了, 后面更新也会在github上更新。 https://github.com/hackstoic/golang-open-source-projects 。 欢迎fork, star , watch, 提issue。
资料参考来源:http://studygolang.com/projects
监控系统
序号 | 名称 | 项目地址 | 简介 |
---|---|---|---|
1 | OpenFalcon | http://github.com/open-falcon/of-release | OpenFalcon是一款小米监控系统。功能:*数据采集免配置:agent自发现、支持Plugin、主动推送模式; *容量水平扩展:生产环境每秒50万次数据收集、告警、存储、绘图,可持续水平扩展。*告警策略自发现:Web界面、支持策略模板、模板继承和覆盖、多种告警方式、支持回调动作。*告警设置人性化:支持最大告警次数、告警级别设置、告警恢复通知、告警暂停、不同时段不同阈值、支持维护周期,支持告警合并。*历史数据高效查询:秒级返回上百个指标一年的历史数据。*Dashboard人性化:多维度的数据展示,用户自定义Dashboard等功能。*架构设计高可用:整个系统无核心单点,易运维,易部署。 |
2 | banshee | http://github.com/eleme/banshee | 周期性指标的监控系统. |
3 | Kapacitor | http://github.com/influxdata/kapacitor | Kapacitor 是一个开源框架,用来处理、监控和警告时间序列数据。 |
4 | Pome | http://github.com/rach/pome | Pome 是 Postgres Metrics 的意思。Pome 是一个 PostgreSQL 的指标仪表器,用来跟踪你的数据库的健康状况。 |
5 | pingd | http://github.com/pinggg/pingd | pingd 是世界上最简单的监控服务,使用 golang 编写。软件支持 IPv6,但是服务器不支持. pingd 允许同时 ping 上千个 IPs,在此期间还可以管理监控的主机。用户提供主机名或者 IP,还有用户邮箱地址,就可以使用 3 个生成 URLs 来开启,停止或者删除你的追踪。每当你的服务器停机或者后台在线都会发送通知,还包含控制 URLs。 |
6 | actiontech zabbix mysql monitor | percona monitoring plugins zabbix 的 Go 语言版本,是由 爱可生 公司开源的 MySQL 监控插件和模板,整合上百个性能监控指标,支持Low Level Discovery 自动发现多实例环境,支持performance_schema | |
7 | rtop | http://github.com/rapidloop/rtop | top 是一个简单的无代理的远程服务器监控工具,基于 SSH 连接进行工作。无需在被监控的服务器上安装任何软件。rtop 直接通过 SSH 连接到待监控服务器,然后执行命令来收集监控数据。rtop 每几秒钟就自动更新监控数据,类似其他 *top 命令 |
8 | Prometheus | http://github.com/prometheus/prometheus | Prometheus 是一个开源的服务监控系统和时间序列数据库, 提供监控数据存储,展示,告警等功能 |
9 | bosun | http://github.com/bosun-monitor/bosun | 专业的跨平台开源系统监控项目,go语言编写,灵活的模板和表达式配合上各种collector可以监控任何应用或系统级的运行数据,比 zabbix更轻量级、更易入手和更适合定制。 |
容器技术
序号 | 名称 | 项目地址 | 简介 |
---|---|---|---|
1 | SwarmKit | https://github.com/docker/swarmkit | SwarmKit 是Docker公司开源的Docker集群管理和容器编排工具,其主要功能包括节点发现、基于raft算法的一致性和任务调度等。 |
2 | DaoliNet | https://github.com/daolinet/daolinet | DaoliNet是一个软件定义网络(SDN)系统,其设计目的是为Docker容器提供动态、高效的链接。在Docker容器中,微服务工作负载具有轻量且短暂的性质,DaoliNet恰好适用于这种性质。 |
3 | Harbor | http://github.com/vmware/harbor | 容器应用的开发和运行离不开可靠的镜像管理。从安全和效率等方面考虑,部署在私有环境内的Registry是非常必要的。Project Harbor是由VMware公司中国团队为企业用户设计的Registry server开源项目,包括了权限管理(RBAC)、LDAP、审计、管理界面、自我注册、HA等企业必需的功能,同时针对中国用户的特点,设计镜像复制和中文支持等功能 |
4 | REX-Ray | https://github.com/emccode/rexray | REX-Ray 是一个 EMC {code} 团队领导的开源项目,为 Docker、Mesos 及其他容器运行环境提供持续的存储访问。其设计旨在囊括通用存储、虚拟化和云平台,提供高级的存储功能。 |
5 | Clair | http://github.com/coreos/clair | Clair 是一个容器漏洞分析服务。它提供一个能威胁容器漏洞的列表,并且在有新的容器漏洞发布出来后会发送通知给用户。 |
6 | Weave | http://github.com/zettio/weave | Weave 创建一个虚拟网络并连接到部署在多个主机上的 Docker 容器。 |
7 | Rocket | http://github.com/coreos/rkt | Rocket (也叫 rkt)是 CoreOS 推出的一款容器引擎,和 Docker 类似,帮助开发者打包应用和依赖包到可移植容器中,简化搭环境等部署工作。Rocket 和 Docker 不同的地方在于,Rocket 没有 Docker 那些为企业用户提供的“友好功能”,比如云服务加速工具、集群系统等。反过来说,Rocket 想做的,是一个更纯粹的业界标准。 |
8 | libnetwork | http://github.com/docker/libnetwork | Libnetwork 提供一个原生 Go 实现的容器连接,是容器的网络。libnetwork 的目标是定义一个健壮的容器网络模型(Container Network Model),提供一个一致的编程接口和应用程序的网络抽象。 |
9 | Wormhole | https://github.com/vishvananda/wormhole | WWormhole 是一个能识别命名空间的由 Socket 激活的隧道代理。可以让你安全的连接在不同物理机器上的 Docker 容器。可以用来完成一些有趣的功能,例如连接运行在容器本机的服务或者在连接后创建按需的服务。 |
10 | Shipyard | http://github.com/shipyard/shipyard | Shipyard 是一个基于 Web 的 Docker 管理工具,支持多 host,可以把多个 Docker host 上的 containers 统一管理;可以查看 images,甚至 build images;并提供 RESTful API 等等。 Shipyard 要管理和控制 Docker host 的话需要先修改 Docker host 上的默认配置使其支持远程管理。 |
11 | Docker | http://github.com/docker/docker | Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app)。几乎没有性能开销,可以很容易地在机器和数据中心中运行。最重要的是,他们不依赖于任何语言、框架或包装系统。 |
PaaS工具
序号 | 名称 | 项目地址 | 简介 |
---|---|---|---|
1 | Kel | http://github.com/kelproject | Kel 是一个开源的基于 Kubernetes 构建的 PaaS 系统,采用 Python 和 Go 语言开发。Kel 可简化管理 Web 应用发布和托管整个软件生命周期。Kel 帮助开发和运维人员轻松管理他们的应用架构,通过一组工具和组件让 K8S 使用非常简单。 |
2 | CloudFoundry-Mesos | http://github.com/mesos/cloudfoundry-mesos | Cloud Foundry-Mesos框架由华为与Mesosphere的工程师合作完成,能够为应用提供安全可靠的、可伸缩、可扩展的云端运行环境,并且应用能够 享用Cloud Foundry生态圈内各类丰富的服务资源。企业能够通过Cloud Foundry开发云应用,并通过Cloud Foundry-Mesos将应用部署到DCOS上,使应用能够与DCOS上安装的其他服务及应用框架共享资源,实现资源利用率最大化,能够大幅降低企业 数据中心运营成本。DCOS能够运行在虚拟和物理环境上,能够支持Linux(以及很快支持Windows),并可适用于私有云、公有云及混合云环境。 |
3 | Flynn | http://github.com/github/flynn | Flynn 是一个开源的 PaaS 系统,由 Docker 开发。采用 Go 语言编写。支持数据库包括 Postgres、Redis 和 MongoDB. Flynn 使用完全组件化模块化的设计,任何一个组件和模块都可以独立的进行替换。 |
4 | DINP | http://git.oschina.net/cnperl/dinp-server | DINP是又一个基于Docker开发的PaaS平台。 |
5 | Kubernetes | http://github.com/GoogleCloudPlatform/kubernetes | Kubernetes 是来自 Google 云平台的开源容器集群管理系统。基于 Docker 构建一个容器的调度服务。该系统可以自动在一个容器集群中选择一个工作容器供使用。其核心概念是 Container Pod。 |
6 | Tsuru | http://github.com/tsuru/tsuru | 在 Tsuru 的 PaaS 服务下,你可以选择自己的编程语言,选择使用 SQL 或者 NoSQL 数据库,memcache、redis、等等许多服务,甚至与你可以使用 Git 版本控制工具来上传你应用。 |
大数据
序号 | 名称 | 项目地址 | 简介 |
---|---|---|---|
1 | MLF | https://github.com/huichen/mlf | 弥勒佛项目是一个大数据机器学习框架。具有为处理大数据优化,可随业务增长scale up,模型的训练和使用都可以作为library或者service整合到在生产系统中,具有丰富的模型,高度可扩展,高度可读性,适合初学者进行大数据模型的学习等特点 |
2 | Glow | http://github.com/chrislusf/glow | low 是使用 Go 编写的易用分布式计算系统,是 Hadoop Map Reduce,Spark,Flint,Samza 等等的替代品。Glow 的目标是提供一个库,可以在并行线程或者分布式集群机器中进行更简单计算。 |
数据库技术
序号 | 名称 | 项目地址 | 简介 |
---|---|---|---|
1 | BuntDB | github.com/tidwall/buntdb | 是纯Go开发的、低层级的(low-level)的、可嵌入的key/value内存数据库(IMDB),数据持久化存储,遵从ACID,支持自定义索引和geospatial 数据。 |
2 | Cockroach | http://github.com/cockroachdb/cockroach | CockroachDB (蟑螂数据库)是一个可伸缩的、支持地理位置处理、支持事务处理的数据存储系统。CockroachDB 提供两种不同的的事务特性,包括快照隔离(snapshot isolation,简称SI)和顺序的快照隔离(SSI)语义,后者是默认的隔离级别。 |
3 | qb-go | http://github.com/aacanakin | qb是用来让使更容易使用数据库的go语言的数据库工具包。它受Python最喜欢的ORM SQLAlchemy的启发,既是一个ORM,也是一个查询生成器。它在表达api和查询构建东西的情形下是相当模块化的。 |
4 | GoshawkDB | http://github.com/goshawkdb | GoshawkDB 是一个采用 Go 语言开发支持多平台的分布式的对象存储服务,支持事务以及容错。GoshawkDB 的事务控制是在客户端完成的。GoshawkDB 服务器端使用 AGPL 许可,而 Go 语言客户端使用 Apache 许可证 |
5 | Codis | http://github.com/wandoulabs/codis | odis 是一个分布式 Redis 解决方案, 对于上层的应用来说, 连接到 Codis Proxy 和连接原生的 Redis Server 没有明显的区别 (不支持的命令列表), 上层应用可以像使用单机的 Redis 一样使用, Codis 底层会处理请求的转发, 不停机的数据迁移等工作, 所有后边的一切事情, 对于前面的客户端来说是透明的, 可以简单的认为后边连接的是一个内存无限大的 Redis 服务. |
6 | Cayley | http://github.com/google/cayley | Cayley 是 Google 的一个开源图(Graph)数据库,其灵感来自于 Freebase 和 Google 的 Knowledge Graph 背后的图数据库。 |
7 | Redigo | http://github.com/garyburd/redigo | Redigo 是 Redis 数据库的 Go 客户端。 |
8 | redis-go-cluster | http://github.com/chasex/redis-go-cluster | redis-go-cluster 是基于 Redigo 实现的 Golang Redis 客户端。redis-go-cluster 可以在本地缓存 slot 信息,并且当集群修改的时候会自动更新。此客户端管理每个节点连接池,使用 goroutine 来尽可能的并发执行,达到了高效,低延迟。 |
9 | Dgraph | http://github.com/dgraph-io/dgraph | dgraph 是可扩展的,分布式的,低延迟图形数据库。DGraph 的目标是提供 Google 生产水平的规模和吞吐量,在超过TB的结构数据里,未用户提供足够低延迟的实时查询。DGraph 支持 GraphQL 作为查询语言,响应 JSON。 |
10 | DegDB | http://github.com/degdb/degdb | DegDB 是分布式的经济图数据库。 |
11 | Vitess | https://github.com/youtube/vitess | outube出品的开源分布式MySQL工具集Vitess,自动分片存储MySQL数据表,将单个SQL查询改写为分布式发送到多个MySQL Server上,支持行缓存(比MySQL本身缓存效率高),支持复制容错,已用于Youtube生产环境 |
12 | xuncache | http://github.com/sun8911879/xuncache | xuncache 是免费开源的NOSQL(内存数据库) 采用golang开发,简单易用而且 功能强大(就算新手也完全胜任)、性能卓越能轻松处理海量数据,可用于缓存系统. |
13 | pgweb | http://github.com/sosedoff/pgweb | gweb 是一个采用 Go 语言开发的基于 Web 的 PostgreSQL 管理系统。 |
14 | Orchestrator | http://github.com/outbrain/orchestrator | MySQL 复制拓扑可视化工具 |
15 | mysql-schema-sync | 暂无 | mysql-schema-sync 是一款使用go开发的、跨平台的、绿色无依赖的 MySQL 表结构自动同步工具。用于将线上(其他环境)数据库结构变化同步到测试(本地)环境! |
16 | TiDB | http://github.com/pingcap/tidb | TiDB 是国内 PingCAP 团队开发的一个分布式 SQL 数据库。其灵感来自于 Google 的 F1, TiDB 支持包括传统 RDBMS 和 NoSQL 的特性。 |
存储技术
序号 | 名称 | 项目地址 | 简介 |
---|---|---|---|
1 | Torus | http://github.com/coreos/torus | Torus是一种针对容器集群量身打造的存储系统,可以为通过Kubernetes编排和管理的容器集群提供可靠可扩展的存储。这是继etcd、rkt、flannel,以及CoreOS Linux之后CoreOS发布的另一个开源产品。 |
2 | Afero | http://github.com/spf13/afero | Afero 是一个文件系统框架,提供一个简单、统一和通用的 API 和任何文件系统进行交互,作为抽象层还提供了界面、类型和方法。Afero 的界面十分简洁,设计简单,舍弃了不必要的构造函数和初始化方法。Afero 作为一个库还提供了一组可交互操作的后台文件系统,这样在与 Afero 协作时,还可以保留 os 和 ioutil 软件包的功能和好处。 |
3 | REX-Ray | https://github.com/emccode/rexray | REX-Ray 是一个 EMC {code} 团队领导的开源项目,为 Docker、Mesos 及其他容器运行环境提供持续的存储访问。其设计旨在囊括通用存储、虚拟化和云平台,提供高级的存储功能。 |
4 | SeaweedFS | http://github.com/chrislusf/seaweedfs | SeaweedFS 是简单,高伸缩性的分布式文件系统,包含两部分:存储数十亿的文件;快速为文件服务。SeaweedFS 作为支持全 POSIX 文件系统语义替代,Seaweed-FS 选择仅实现 key-file 的映射,类似 "NoSQL",也可以说是 "NoFS"。 |
5 | bfs | http://github.com/Terry-Mao/bfs | bfs 是使用 Go 编写的分布式文件系统(小文件存储)。 |
6 | IPFS | http://github.com/ipfs/go-ipfs | IPFS 是分布式文件系统,寻求连接所有计算机设备的相同文件系统。在某些方面,这很类似于原始的 Web 目标,但是 IPFS 最终会更像单个比特流群交换的 git 对象。IPFS = InterPlanetary File System |
分布式系统
序号 | 名称 | 项目地址 | 简介 |
---|---|---|---|
1 | Confd | http://github.com/kelseyhightower | Confd是一个轻量级的配置管理工具。通过查询Etcd,结合配置模板引擎,保持本地配置最新,同时具备定期探测机制,配置变更自动reload。 |
2 | zerg | hhttp://github.com/huichen/zerg | 基于docker的分布式爬虫服务 |
3 | Doorman | https://github.com/youtube/doorman | Doorman 是一个客户端速率限制的解决方案,客户端与共享资源进行通讯,包括数据库、gRPC 服务、RESTful API 等等可使用 Doorman 来限制对资源的调用。Doorman 使用 Go 语言开发,使用 gRPC 的通讯协议。其高可用特性需要一个分布式的锁管理器,当前支持 etcd,也可使用 Zookeeper 替代。 |
4 | Go-kit | http://github.com/go-kit/kit | Go-kit 是一个 Go 语言的分布式开发包,用于开发微服务。 |
5 | Hprose | http://github.com/andot/hprose | Hprose 是高性能远程对象服务引擎(High Performance Remote Object Service Engine)的缩写 —— 微服务首选引擎。它是一个先进的轻量级的跨语言跨平台面向对象的高性能远程动态通讯中间件。它不仅简单易用,而且功能强大。你只需要稍许的时间去学习,就能用它轻松构建跨语言跨平台的分布式应用系统了。 |
6 | Gizmo | http://github.com/NYTimes/gizmo | 纽约时报开源的go微服务工具.提供如下特性:* 标准化配置和日志;* 可配置策略的状态监测端点;* 用于管理 pprof 端点和日志级别的配置;* 结构化日志,提供基本请求信息;* 端点的有用度量;* 优雅的停止服务;* 定义期待和词汇的基本接口 |
7 | mgmt | http://github.com/purpleidea/mgmt | mgmt 是一个分布式的,事件驱动的配置管理工具。该工具支持并行执行,其 librarification 作为新的及已存在的软件的基础管理工具。 |
8 | Yoke | http://github.com/nanopack/yoke | Yoke 是 Postgres 的高可用集群,具有自动切换和自动集群恢复。Postgres冗余/自动故障转移解决方案,提供一个高可用PostgreSQL集群的简单管理。 |
9 | SeaweedFS | http://github.com/chrislusf/seaweedfs | SeaweedFS 是简单,高伸缩性的分布式文件系统,包含两部分:存储数十亿的文件;快速为文件服务。SeaweedFS 作为支持全 POSIX 文件系统语义替代,Seaweed-FS 选择仅实现 key-file 的映射,类似 "NoSQL",也可以说是 "NoFS"。 |
10 | Glow | http://github.com/chrislusf/glow | low 是使用 Go 编写的易用分布式计算系统,是 Hadoop Map Reduce,Spark,Flint,Samza 等等的替代品。Glow 的目标是提供一个库,可以在并行线程或者分布式集群机器中进行更简单计算。 |
11 | Nomad | http://github.com/hashicorp/nomad | Nomad 是一个集群管理器和调度器,专为微服务和批量处理工作流设计。Nomad 是分布式,高可用,可扩展到跨数据中心和区域的数千个节点。 |
消息系统
序号 | 名称 | 项目地址 | 简介 |
---|---|---|---|
1 | KiteQ | http://github.com/blackbeans/kiteq | KiteQ 是一个基于 go + protobuff 实现的多种持久化方案的 mq 框架(消息队列)。 |
2 | NSQ | http://github.com/bitly/nsq | NSQ 是无中心设计、节点自动注册和发现的开源消息系统。可作为内部通讯框架的基础,易于配置和发布。 |
3 | kingtask | https://github.com/kingsoft-wps/kingtask | kingtask是一个由Go开发的轻量级的异步定时任务系统。支持定时的异步任务。 支持失败重试机制,重试时刻和次数可自定义。 任务执行结果可查询。 |
4 | Go Machinery | http://github.com/RichardKnop/machinery | Machinery 是一个 Go 语言的异步任务队列和作业队列,基于分布式消息传递。类似 Python 的 Celery 框架。 |
5 | kaca | http://github.com/scottkiss/kaca | kaca 是用 golang 语言开发的基于 websocket 协议的消息发布/订阅系统。 |
服务器管理
序号 | 名称 | 项目地址 | 简介 |
---|---|---|---|
1 | Sharkey | https://github.com/square/sharkey | Sharkey 是OpenSSH管理证书使用的服务。Sharkey 分为客户端组件和服务端组件,服务端负责发布已签署的主机证书,客户端负责在机器上安装主机证书。 |
2 | OSinstall | http://github.com/idcos/osinstall | CloudBoot”(OSinstall)云装机平台,是金融云初创公司杭州云霁科技推出的一款X86服务器全自动装机工具,遵循Apache协议,完全开源免费。全自动构建物理机资源池,像创建虚拟机一样方便的安装物理机。 |
3 | ssh2go | http://github.com/karfield | ssh2go 是对libssh的golang 封装。libssh是SSH的代码库,同时支持服务端和客户端,日常所见的ssh, sshd, scp, sftp均基于libssh。ssh2go是对libssh的Go语言绑定, 100%的libssh接口都可用,同时集成示例,方便参考。 |
4 | Gooverssh | https://github.com/scottkiss/gooverssh | gooverssh 是基于gosshtool的一个ssh开发包开发的一个基于ssh本地端口转发服务小应用,可以方便突破一些网络限制,如通过ssh代理访问内网数据库服 |
5 | gosshtool | http://github.com/scottkiss/gosshtool | gosshtool provide some useful functions for ssh client in golang.implemented using golang.org/x/crypto/ssh.go语言中提供ssh相关操作,支持ssh本地端口转发服务 |
6 | WebConsole | http://git.oschina.net/shibingli/webconsole | 基于Golang、WebSocket、TermJS的SSH远程终端,主要应用到隔离网络内,SSH远程终端的访问问题。 |
7 | GoWebSSH | http://github.com/who246/GoWebSSH | GoWebSSH -golang 语言开发的 web server manager 服务器及命令管理/beego开源框架/WebSocket技术 |
安全工具
序号 | 名称 | 项目地址 | 简介 |
---|---|---|---|
1 | gomitmproxy | https://github.com/sheepbao/gomitmproxy | GomitmProxy是想用golang语言实现的mitmproxy,主要实现http代理,目前实现了http代理和https抓包功能。 |
2 | Hyperfox | http://github.com/xiam/hyperfox | Hyperfox 是一个安全的工具用来代理和记录局域网中的 HTTP 和 HTTPS 通讯。 |
3 | Gryffin | http://github.com/yahoo/gryffin | Gryffin 是雅虎开发的一个大规模 Web 安全扫描平台。它不是另外一个扫描器,其主要目的是为了解决两个特定的问题 —— 覆盖率和伸缩性。 |
4 | ngrok | http://github.com/inconshreveable/ngrok | ngrok 是一个反向代理,通过在公共的端点和本地运行的 Web 服务器之间建立一个安全的通道。ngrok 可捕获和分析所有通道上的流量,便于后期分析和重放。 |
网络工具
序号 | 名称 | 项目地址 | 简介 |
---|---|---|---|
1 | DaoliNet | https://github.com/daolinet/daolinet | DaoliNet是一个软件定义网络(SDN)系统,其设计目的是为Docker容器提供动态、高效的链接。在Docker容器中,微服务工作负载具有轻量且短暂的性质,DaoliNet恰好适用于这种性质。 |
2 | Seesaw | http://github.com/google/seesaw | Seesaw 是 Google 开源的一个基于 Linux 的负载均衡系统。Seesaw 包含基本的负载均衡特性,同时支持一些高级的功能,诸如:anycast, Direct Server Return (DSR), 支持多个 VLANs 和集中式配置。同时其设计的宗旨是易于维护。需要注意的是,尽管该项目挂靠在 Google 名下,但并非 Google 官方产品。 |
3 | TcpRoute2 | http://github.com/GameXG/TcpRoute2 | TcpRoute, TCP 层的路由器。对于 TCP 连接自动从多个线路(允许任意嵌套)、多个域名解析结果中选择最优线路。TcpRoute2 是 golang 重写的版本。通过 socks5 代理协议对外提供服务。代理功能拆分成了独立的库,详细代理url格式级选项请参见 ProxyClient,目前支持直连、socks4、socks4a、socks5、http、https、ss 代理线路 |
4 | Gor | http://github.com/buger/gor | Gor 是用 Go 编写的简单 HTTP 流量复制工具,主要是为了从生产服务器返回流量到开发环境。使用 Gor 可以在实际的用户会话中测试代码。 |
5 | Traefik | https://github.com/containous/traefik | Træfɪk 是一个新型的http反向代理、负载均衡软件,能轻易的部署微服务. 它支持多种后端 (Docker, Swarm, Mesos/Marathon, Consul, Etcd, Zookeeper, BoltDB, Rest API, file...) ,可以对配置进行自动化、动态的管理. |
6 | TChannel | http://github.com/uber/tchannel | TChannel 是用于 RPC 的网络复用和成帧协议。 |
Web工具
序号 | 名称 | 项目地址 | 简介 |
---|---|---|---|
1 | Tyk | http://github.com/lonelycode/tyk | Tyk 是一个开源的、轻量级的、快速可伸缩的 API 网关,支持配额和速度限制,支持认证和数据分析,支持多用户多组织,提供全 RESTful API。 |
2 | Shortme | http://github.com/andyxning | 用Golang编写的URL短链接服务。 |
3 | WuKongSearch | http://github.com/huichen/wukong | WuKong 是一个全文搜索引擎。功能特性有:高效索引和搜索(1M条微博500M数据28秒索引完,1.65毫秒搜索响应时间,19K搜索QPS);支持中文分词(使用sego分词包并发分词,速度27MB/秒);支持计算关键词在文本中的紧邻距离(token proximity);支持计算BM25相关度;支持自定义评分字段和评分规则;支持在线添加、删除索引;支持持久存储;可实现分布式索引和搜索等 |
4 | Pholcus | http://github.com/henrylee2cn/pholcus | Pholcus(幽灵蛛)是一款纯Go语言编写的高并发、分布式、重量级爬虫软件,支持单机、服务端、客户端三种运行模式,拥有Web、GUI、命令行三种操作界面;规则简单灵活、批量任务并发、输出方式丰富(mysql/mongodb/csv/excel等)、有大量Demo共享;同时她还支持横纵向两种抓取模式,支持模拟登录和任务暂停、取消等一系列高级功能。 |
5 | Codetainer | http://github.com/codetainerapp/codetainer | Codetainer 可以让你创建基于浏览器上的代码运行沙箱,可方便的嵌入到你的 Web 应用中。你可以把它当成是 codepicnic.com 的开源克隆) . |
6 | GoTTY | http://github.com/yudai/gotty | GoTTY 是个简单的命令行工具,可以把 CLI 工具共享成 Web 应用。GoTTY 可以把终端作为 Web 应用共享。 |
7 | TermUI | http://github.com/gizak/termui | Go语言编写的终端仪表盘 |
8 | Hound | http://github.com/etsy/hound | 快如闪电的代码搜索开源工具 |
9 | goim | http://github.com/Terry-Mao/goim | goim 是一个支持集群的im及实时推送服务(支持websocket,http和tcp协议) |
10 | fasthttp | http://github.com/valyala/fasthttp | asthttp 是 Go 的快速 HTTP 实现,当前在 1M 并发的生产环境使用非常成功,可以从单个服务器进行 100K qps 的持续连接。HTTP 服务器性能与 net/http 比较,fasthttp 比 net/http 快 10 倍 |
11 | netgraph | http://github.com/ga0/netgraph | netgraph 是一个 Go 语言编写的跨平台的 B/S 架构的 HTTP 抓包工具,方便在 Linux 服务器上直接查看 HTTP 包。 |
12 | gohttp | http://github.com/codeskyblue/gohttp | gohttp是一个http的文件服务器,功能有:各种文件的预览功能,实时的目录zip打包下载,二维码扫描下载的支持,苹果应用的在线安装,文件上传等 |
13 | API-front | 暂无 | API front是 HTTP API 前端,可进行请求代理转发、协议抓包分析、流量复制。主要是用于开发测试环境,用来解决开发测试环境多变等问题 |
Web框架
序号 | 名称 | 项目地址 | 简介 |
---|---|---|---|
1 | Iris-Go | 暂无 | 通过Iris-Go,可以方便的帮助你来开发基于web的应用。简单来说:Iris-Go与国内大牛的BeeGo类似,但从其官方介绍的资料来看,Iris-Go的性能更优! |
2 | Baa | http://github.com/go-baa/baa | Baa 一个简单高效的Go web开发框架。主要有路由、中间件,依赖注入和HTTP上下文构成。 |
3 | Orivil | http://github.com/orivil/orivil | Orivil 是由 golang 开发的全新 web 框架,灵感来源于 Laravel 及 Symfony。 |
4 | ecgo | http://github.com/tim1020/ecgo | ecgo 是一个易学、易用、易扩展的go web开发框架 |
5 | Gin | http://github.com/gin-gonic/gin | Gin 是一个用 Go 语言开发的 Web 框架,提供类 Martini 的 API,但是性能更好。因为有了 httprouter 性能提升了 40 倍之多。 |
6 | Melody | http://github.com/olahol/melody | Melody 是一个 Go 语言的微型 WebSocket 框架,基于 github.com/gorilla/websocket 开发, |
7 | utron | http://github.com/gernest/utron | utron 是一个 Go 语言轻量级的 MVC 框架,用于快速构建可伸缩以及可靠的数据库驱动的 Web 应用。 |
8 | Lessgo | http://github.com/lessgo/lessgo | Lessgo 是一款 Go 语言编写的简单、稳定、高效、灵活的 web 完全开发框架。它的项目组织形式经过精心设计,实现前后端分离、系统与业务分离,完美兼容MVC与MVVC等多种开发模式,非常利于企业级应用与API接口的开发。当然,最值得关注的是它突破性地支持了运行时路由重建,开发者可在Admin后台轻松实现启用/禁用模块与操作,添加/移除中间件等功能!同时,它推荐以HandlerFunc与MiddlewareFunc为基础的函数式编程,也令开发变得更加灵活富有趣味性。 |
9 | Hopen | http://github.com/who246/hopen | Golang web极速开发框架。 |
10 | ThinkGo | http://github.com/henrylee2cn/thinkgo | ThinkGo 是一款 Go 语言编写的 web 快速开发框架。它基于开源框架 Gin 进行二次开发,旨在实现一种类 ThinkPHP 的高可用、高效率的 web 框架。在此感谢 Gin 和 httprouter。它最显著的特点是模块、控制器、操作三段式的标准 MVC 架构,且模块与插件的目录结构完全一致,令开发变得非常简单灵活。 |
11 | beego | http://github.com/astaxie/beego | beego是一个用Go开发的应用框架,思路来自于tornado,路由设计来源于sinatra, |
12 | Revel | http://github.com/robfig/revel | Revel 是 Go 语言的框架,其思路完全来自 Java 的 Play Framework。 |
13 | Martini | http://github.com/codegangsta/martini | Martini 是一个非常新的 Go 语言的 Web 框架,使用 Go 的 net/http 接口开发,类似 Sinatra 或者 Flask 之类的框架,你可使用自己的 DB 层、会话管理和模板。 |
14 | Tango | http://github.com/lunny/tango | Tango,微内核可扩展的Go语言Web框架。同时支持函数和结构体作为执行体,插件丰富。 |
15 | Macaron | https://github.com/go-macaron/macaron | Macaron 是一个具有高生产力和模块化设计的 Go Web 框架。框架秉承了 Martini 的基本思想,并在此基础上做出高级扩展。 |
16 | Web.go | http://github.com/hoisie/web | eb.go 跟 web.py 类似,但使用的是 Go 编程语言实现的 Web 应用开发框架。Go发布没多久该框架就诞生了,差不多是最早的Go框架。目前已经有段时间没有更新了。不过,该框架代码不多,其源码可以读一读。 |
区块链技术
序号 | 名称 | 项目地址 | 简介 |
---|---|---|---|
1 | fabric | https://github.com/hyperledger/fabric | Fabric是一个开源区块链实现,开发环境建立在VirtualBox虚拟机上,部署环境可以自建网络,也可以直接部署在BlueMix上,部署方式可传统可docker化,共识达成算法插件化,支持用Go和JavaScript开发智能合约,尤以企业级的安全机制和membership机制为特色。你要是不知道这些术语什么意思,就记住一点,Fabric之于区块链,很可能正如Hadoop之于大数据。 |
其它
序号 | 名称 | 项目地址 | 简介 |
---|---|---|---|
1 | Meizar | http://github.com/qibin0506 | golang实现抓取妹子图。默认图片来源网站:http://jandan.net。 也可以自定义规则抓取其它网站的图片 |
2 | KodeRunr | https://github.com/jaxi/koderunr | KodeRunr (读作 code runner) 是款我在闲暇时间用Go语言编写的应用。顾名思义,你可以用它在网页上、命令行里写程序,贴代码,与此同时无需在本地安装任何编程语言。支持Ruby, Python, GO, Swift, C, Elixir等 |
3 | godaemon | http://github.com/tim1020/godaemon | godaemon是用来为应用增加daemon和graceful的。 |
4 | Gomobile | http://github.com/golang/mobile | Gomobile是一个应用于iOS和Android的优秀跨平台开发库,为开发者提供用于创建Android和iOS 移动平台代码的工具。 |
5 | gojieba | http://github.com/yanyiwu/gojieba | "结巴"中文分词的Golang语言版本。 |
6 | Cherry | http://github.com/rafael-santiago/cherry | Cherry 是一个使用 Go 语言开发的 Web 聊天引擎。 |
7 | MailSlurper | http://github.com/mailslurper/mailslurper | MailSlurper 是一个便携的 SMTP 邮件服务器,对本地和团队应用开发来说非常有用。MailSlurper 体积小运行快速,支持 SQLite, MSSQL 和 MySQL. 数据库。 |
8 | RobustIRC | http://github.com/robustirc/robustirc | RobustIRC 是不会有网络中断情况的 IRC。RobustIRC 主要特性:* 服务器不可用的时候不会有网络中断;* 可以使用标准 IRC 客户端;* 健壮,可以很好处理客户端和网络的连接问题 |
9 | Qor | http://github.com/qor/qor | Qor 是基于 Golang 开发的的CMS 一系列工具库,基于 Qor可以快速搭建网站的后台管理系统。Qor 的工作库包含:1,后台管理:可以对数据库进去 CURD 管理,支持一对一,一对多,多对多关联关系维护等等; 2,支持上传图片到云以及 filesystem,resize、crop 图片等等 ;3,Publish 发布系统,可以修改数据,并且经过检查后,再发布到正式环境中; 4,状态机,可以用于开发工作流的系统; 5,I18n,翻译,可以通过在 WEB 界面翻译,并将翻译保存到数据库中; 6,L10n,本地化,不同于翻译,他可以针对某个地区来对内容,或者数据结构进行本地化。7,Roles,权限管理; 8,Exchange,通过 Excel,CSV 导入导出数据; 9,Worker,后台任务管理,可用于跑定时任务等等 |
10 | FishChat | http://github.com/oikomi/FishChatServer | FishChat(鱼传——鱼传尺素)分布式可伸缩 IM 服务器,是一款纯 golang 编写优秀的即时通讯软件(IM), 它集合了市面上已有产品的优点, 并具备 智能硬件网关管理(学习QQ物联思想, 构思中)。 |
11 | goRBAC | http://github.com/mikespook/gorbac | goRBAC 为 Go 语言应用提供了轻量级的基于角色的访问控制。 |
12 | boom | http://github.com/rakyll/boom | Boom 是 google 一女工程师使用 Go 语言开发的类似 apache ab 的性能测试工具。相比 ab,boom跨平台性更好,而且更容易安装。 |
13 | Mattermost | http://github.com/mattermost/platform | attermost 是一个 Slack 的开源替代品。Mattermost 采用 Go 语言开发,这是一个开源的团队通讯服务。为团队带来跨 PC 和移动设备的消息、文件分享,提供归档和搜索功能。 |
14 | glot | http://github.com/prasmussen/glot | glot 是可以可以在线运行各种编程语言代码片段的平台,项目采用 Haskell Script 、Go、Erlang 和 Shell 开发,运行环境基于 Docker 容器进行。 |
15 | * | http://github.com/get*/* | *是一个点对点***软件。 |
16 | dog-tunnel | http://github.com/vzex/dog-tunnel | 狗洞是一个高速的 P2P 端口映射工具,同时支持Socks5代理。 0.5版后开始开源,UDP底层基于开源库KCP重写,效率大大提高,在恶劣环境下优势明显。 同时提供非P2P版本(Lite版本),两端连接过程完全不依赖中间服务器,支持加密和登陆认证,自动重连,但是需要人为确保两端能正常连通(否则请使用默认的P2P版本) |
17 | GRPC | https://github.com/grpc | GRPC 是一个高性能、开源和通用的 RPC 框架,面向移动和 HTTP/2 设计。目前提供 C、Java 和 Go 语言版本,分别是:grpc, grpc-java, grpc-go. 其中 C 版本支持 C, C++, Node.js, Python, Ruby, Objective-C, PHP 和 C# 支持.GRPC 基于 HTTP/2 标准设计,带来诸如双向流、流控、头部压缩、单 TCP 连接上的多复用请求等特。这些特性使得其在移动设备上表现更好,更省电和节省空间占用。 |
18 | LiteIDE | https://github.com/visualfc/liteide |
LiteIDE是一款开源、跨平台的轻量级Go语言集成开发环境(IDE)。 |
10大Go语言开源项目推荐
编程哲学的重塑是Go语言独树一帜的根本原因,其它语言仍难以摆脱OOP或函数式编程的烙印,只有Go完全放弃了这些,对编程范式重新思考,对热门的面向对象编程提供极度简约但却完备的支持。Go是互联网时代的C语言,不仅会制霸云计算,10年内将会制霸整个IT领域。
前不久,Facebook也开源了很多Go语言库,可前往GitHub托管地址查看。
10大流行Go语言开源项目
适逢Go语言诞生5周年之际,外媒JavaWorld也发布文章,整理了由Go语言开发的10大流行开源项目。Go语言目前从虚拟化到Git代码托管服务等方面,都有重量级项目现身,越发凸现Go语言在云计算时代的重要性。
1. Docker
到现在,Docker几乎是Go再难找到也难以复制的一个成功案例。Docker项目在2014年9月份就拿到了C轮4000万美元融资,版本迭代速度超快,目前从GitHub看到已有78个版本,而它仅仅是再2013年初才正式开始的一个项目而已。目前,国内Docker技术推广也进行的如火如荼,比如 Docker中文社区,CSDN也建立了 Docker专区。CSDN CODE也将在近期与Docker中文社区合作,推出Docker技术文章翻译活动,届时也请大家多多关注,及时关注与参与。
Docker团队之所以喜欢用Go语言,主要是Go具有强大的标准库、全开发环境、跨平台构建的能力。
GitHub托管地址: https://github.com/docker/docker
2. Kubernetes
Kubernetes是2014年夏天Google推出的Kubernetes,基于Docker,其目的是让用户通过Kubernetes集群来进行云端容器集群的管理,而无需用户进行复杂的设置工作。系统会自动选取合适的工作节点来执行具体的容器集群调度处理工作。其核心概念是Container Pod(容器仓)。
GitHub托管地址: https://github.com/GoogleCloudPlatform/kubernetes
3. Etcd & Fleet
etcd是由CoreOS开发并维护键值存储系统,它使用Go语言编写,并通过Raft一致性算法处理日志复制以保证强一致性。目前,Google的容器集群管理系统Kubernetes、开源PaaS平台Cloud Foundry和CoreOS的Fleet都广泛使用了etcd。详情,可了解 《Etcd:用于服务发现的键值存储系统》。 Fleet则是一个分布式的初始化系统。它们之所以选择使用Go语言,则是因为Go语言对跨平台的良好支持,以及其背后的强大社区。
GitHub托管地址: https://github.com/coreos/etcd
4. Deis
Deis是一个基于Docker和CoreOS的开源PaaS平台,旨在让部属和管理服务器上的应用变得轻松容易。它可以运行在AWS、GCE以及Openstack平台下。详情,可了解 《Deis v1.0正式发布!》。
GitHub托管地址: https://github.com/deis/deis
5. Flynn
Flynn是一个使用Go语言编写的开源PaaS平台,可自动构建部署任何应用到Docker容器集群上运行。Flynn项目受到Y Combinator的支持,目前仍在开发中,被称为是下一代的开源PaaS平台。
GitHub托管地址: https://github.com/flynn/Flynn
6. Lime
相对上面的几款Go语言在云端和服务器端之外,Lime则显得比较特殊。Lime,则是一款用Go语言写的桌面编辑器程序,被看做是著名编辑器Sublime Text的开源实现。
GitHub托管地址: https://github.com/limetext/lime
7. Revel
Revel是一个高生产力的Go语言Web框架。Revel框架支持热编译,当编辑、保存和刷新源码时,Revel会自动编译代码和模板;全栈特性,支持路由、参数解析、缓存、测试、国际化等功能。
GitHub托管地址: https://github.com/revel/revel
8. InfluxDB
一个Go语音编写的开源分布式的时序、事件和指标数据库,无需外部依赖。其设计目标是实现分布式和水平伸缩扩展。
GitHub托管地址: https://github.com/influxdb/influxdb
9. Syncthing
一款用Go语言编写的开源云存储和同步服务工具,用户的数据将由自己完全控制,所有的通信全都加密,每个访问节点都用加密证书验证。该项目被认为是Dropbox和 BitTorrent Sync的开源替代, 详情。Syncthing之所以选择Go语言,也是出于跨平台考虑。
GitHub托管地址: https://github.com/syncthing/syncthing
10. Gogs
Gogs则是一款由国人无闻(GitHub)开发的自助Git服务项目。Gogs的目标是打造一个最简单、最快速和最轻松的方式搭建自助Git服务。据作者称,之所以选择使用Go语言开发,就是Go允许Gogs可以通过独立的二进制分发,且对跨平台有良好支持。
GitHub托管地址: https://github.com/gogits/gogs
除了上面的10款流行Go语言项目外,我们这里另外外大家推荐几款Go语言相关的项目,如国人开发的Go Web应用框架 Beego、开源的Go语言开发环境 LiteIDE等,它们也都很流行,希望大家多多关注并支持国人开源项目。
本文来自:ITEYE资讯
golang 开源项目全集
一直更新中,地址:https://github.com/golang/go/wiki/Projects#zeromq
Indexes and search engines
These sites provide indexes and search engines for Go packages:
- awesome-go - A community curated list of high-quality resources.
- Awesome Go @LibHunt - Your go-to Go Toolbox.
- godoc.org - A documentation browser for any Go open source package.
- go-hardware - Curated list of resources for using Go on non-standard hardware.
- go-patterns - Commonly used patterns and idioms for Go.
- gopm.io - Download Go packages by version
- go-search - Search engine dedicated to Go projects and source.
- gowalker - API documentation generator and search.
- Golang Data Science - Curated list of data science libraries for Go.
- Go Report Card - Code quality summaries for any Go project.
- Sourcegraph - Source indexing, analysis and search.
Dead projects
If you find a project in this list that is dead or broken, please either mark it as such or mention it in the #go-nuts IRC channel.
Table of Contents
- Astronomy
- Build Tools
- Caching
- Cloud Computing
- Command-line Option Parsers
- Command-line Tools
- Compression
- Concurrency and Goroutines
- Configuration File Parsers
- Console User Interface
- Continuous Integration
- Cryptography
- Databases
- Data Processing
- Data Structures
- Date
- Development Tools
- Distributed/Grid Computing
- Documentation
- Editors
- Encodings and Character Sets
- Error handling
- File Systems
- Games
- GIS
- Go Implementations
- Graphics and Audio
- GUIs and Widget Toolkits
- Hardware
- Language and Linguistics
- Logging & Monitoring
- Machine Learning & AI
- Mathematics
- Microservices
- Miscellaneous
- Music
- Networking
- DNS
- FTP
- HTTP
- IMAP
- Instant Messaging
- NNTP
- Protocol Buffers
- rsync
- Telnet
- VNC
- Websockets
- ZeroMQ
- Misc Networking
- Operating System Interfaces
- Other Random Toys, Experiments and Example Code
- P2P and File Sharing
- Programming
- Resource Embedding
- RPC
- Scanner and Parser Generators
- Security
- Simulation Modeling
- Sorting
- Source Code Management
- Storage
- Strings and Text
- Testing
- Unix
- Unsorted
- Validation
- Version Control
- Virtual Machines and Languages
- Web Applications
- Web Libraries
- Windows
Astronomy
- go-fits - FITS (Flexible Image Transport System) format image and data reader
- astrogo/fitsio - Pure Go FITS (Flexible Image Transport System) format image and data reader/writer
- gonova - A wrapper for libnova -- Celestial Mechanics, Astrometry and Astrodynamics Library
- meeus - Implementation of "Astronomical Algorithms" by Jean Meeus
- novas - Interface to the Naval Observatory Vector Astrometry Software (NOVAS)
Build Tools
- colorgo - Colorize go build output
- dogo - Monitoring changes in the source file and automatically compile and run (restart)
- fileembed-go - This is a command-line utility to take a number of source files, and embed them into a Go package
- gb - A(nother) build tool for go, with an emphasis on multi-package projects
- gg - A tiny multi golang projects env/make management tool.
- GG - A build tool for Go in Go
- godag - A frontend to the Go compiler collection
- goenv - goenv provides Go version and Go workspace management tools
- gopei - Simple Go compiler and LiteIDE installer for Unix/Linux that adds many features like github support and presenter.
- go-pkg-config - lightweight clone of pkg-config
- goscons - Another set of SCons builders for Go
- gotgo - An experimental preprocessor to implement 'generics'
- gows - Go workspace manager
- goxc - A build tool with a focus on cross-compiling, packaging, versioning and distribution
- GVM - GVM provides an interface to manage Go versions
- Realize - A Go build system with file watchers, output streams and live reload. Run, build and watch file changes with custom paths.
- SCons Go Tools - A collection of builders that makes it easy to compile Go projects in SCons
Caching
- cache - LevelDB style LRU cache for Go, support non GC object cache.
- cache2go - Concurrency-safe caching library with expiration capabilities and access counters
- go-cache - An in-memory key:value store/cache (similar to Memcached) library for Go, suitable for single-machine applications
- golibs/cache - A tiny cache package
- gomemcached - A memcached server in go
- gomemcache - a memcached client
- go-slab - Slab allocator for go.
- groupcache - Caching and cache-filling library, intended as a replacement for memcached in many cases
- libmemcache - Fast client and server libraries speaking memcache protocol
- memcached-bench - Benchmark tool for memcache servers
- memcached - Fast memcache server, which supports persistence and cache sizes exceeding available RAM
- memcache - go memcached client, forked from YouTube Vitess
- rend - A memcached proxy that manages data chunking and L1/L2 caches
- YBC bindings - Bindings for YBC library providing API for fast in-process blob cache
Cloud Computing
- LXD Daemon based on liblxc offering a REST API to manage containers
- Docker - The Linux container runtime. Developed by dotCloud.
- Enduro/X ASG Application Server for Go. Provides application server and middleware facilities for distributed transaction processing. Supports microservices based application architecture. Developed by ATR Baltic.
- Kubernetes - Container Cluster Manager from Google.
- flamingo - A Lightweight Cloud Instance Contextualizer.
- gocircuit - A distributed operating system that sits on top of the traditional OS on multiple machines in a datacenter deployment. It provides a clean and uniform abstraction for treating an entire hardware cluster as a single, monolithic compute resource. Developed by Tumblr.
- gosync - A package for syncing data to and from S3.
- juju - Orchestration tool (deployment, configuration and lifecycle management), developed by Canonical.
- mgmt - Next Generation Configuration Management tool (parallel, event driven, distributed system) developed by @purpleidea, (a Red Hat employee) and the mgmt community.
- rclone - "rsync for cloud storage" - Google Drive, Amazon Drive, S3, Dropbox, Backblaze B2, One Drive, Swift, Hubic, Cloudfiles, Google Cloud Storage, Yandex Files
- ShipBuilder - ShipBuilder is a minimalist open source platform as a service, developed by Jay Taylor.
- swift - Go language interface to Swift / Openstack Object Storage / Rackspace cloud files
- Tsuru - Tsuru is an open source polyglot cloud computing platform as a service (PaaS), developed by Globo.com.
- aws-sdk-go - AWS SDK for the Go programming language.
Command-line Option Parsers
- argcfg - Use reflection to populate fields in a struct from command line arguments
- autoflags - Populate go command line app flags from config struct
- cobra - A commander for modern go CLI interactions supporting commands & POSIX/GNU flags
- command - Add subcommands to your CLI, provides help and usage guide.
- docopt.go - An implementation of docopt in the Go programming language.
- getopt - full featured traditional (BSD/POSIX getopt) option parsing in Go style
- getopt - Yet Another getopt Library for Go. This one is like Python's.
- gnuflag - GNU-compatible flag parsing; substantially compatible with flag.
- go-commander - Simplify the creation of command line interfaces for Go, with commands and sub-commands, with argument checks and contextual usage help. Forked from the "go" tool code.
- go-flags - command line option parser for go
- goopt - a getopt clone to parse command-line flags
- go-options - A command line parsing library for Go
- options - Self documenting CLI options parser
- opts.go - lightweight POSIX- and GNU- style option parsing
- pflag - Drop-in replacement for Go's flag package, implementing POSIX/GNU-style --flags.
- subcommands - A concurrent, unit tested, subcommand library
- uggo - Yet another option parser offering gnu-like option parsing. This one wraps (embeds) flagset. It also offers rudimentary pipe-detection (commands like ls behave differently when being piped to).
- writ - A flexible option parser with thorough test coverage. It's meant to "just work" and stay out of the way.
- cli - A Go library for implementing command-line interfaces.
- cmdline - A simple parser with support for short and long options, default values, arguments and subcommands.
Command-line Tools
- awless - A Mighty command-line interface for Amazon Web Services (AWS).
- boilr - A blazing fast CLI tool for creating projects from boilerplate templates.
- coshell - A drop-in replacement for GNU 'parallel'.
- DevTodo2 - A small command-line per-project task list manager.
- enumeration - Easy enumeration code generation.
- fzf - A command-line fuzzy finder
- gich - A cross platform which utility written in Go
- git-time-metric - Simple, seamless, lightweight time tracking for Git
- gister - Manage your github gists from the command-line
- gmail2go - Simple gmail multiple accounts cli mail checker
- gocreate - Command line utility that create files from templates.
- godocdoc - Start godoc and open it in your browser to the project in the current directory.
- gojson - Command-line tool for manipulating JSON for use in developing Go code.
- GoPasswordCreator - A small tool, which creates random passwords
- GoNote - Command line SimpleNote client.
- Grozilla - File downloader utility with resume capability.
- jsonpp - A fast command line JSON pretty printer.
-
lsp - A human-friendlier alternative to
ls
- ltst - View the latest news of your choosing right in your terminal
- passhash - Command-line utility to create secure password hashes
- passman - A command-line password manager
- pjs - Pretty print and search through JSON data structures fast.
- project - Very simple CLI tool to setup new projects from boilerplate templates.
- pwdgen - A small tool, which generate human password, written in Go.
- redis-view - A tree like tool help you explore data structures in your redis server
- restic - A fast, efficient and secure backup program
-
runtemplate - A very simple command-line tool for executing Go templates, useful for use with
go generate
. - runtemplate - A simple tool for executing Go templates to support generating Go code for your types.
-
sift - A fast and powerful open source alternative to
grep
- tecla - Command-line editing library
- wlog - A simple logging interface that supports cross-platform color and concurrency.
- wmenu - An easy to use menu structure for cli applications that prompts users to make choices.
- comb-go - A CLI tool implemented by Golang to manage CloudComb resources.
- JayDiff - A JSON diff utility written in Go.
Compression
- compress - Faster drop in replacements for gzip, zip, zlib, deflate
- dgolzo - LZO bindings
-
dictzip - A reader and writer for files in the random access
dictzip
format - fast-archiver - Alternative archiving tool with fast performance for huge numbers of small files
- gbacomp - A Go library to (de)compress data compatible with GBA BIOS
- go-lz4 - Port of LZ4 lossless compression algorithm to Go.
- go-lzss - Implementation of LZSS compression algorithm in Go
- go-sevenzip - Package sevenzip implements access to 7-zip archives (wraps C interface of LZMA SDK)
- go-zip - A wrapper around C library libzip, providing ability to modify existing ZIP archives.
- lzma - compress/lzma package for Go
- pgzip - Multicore gzip, compatible with the standard library
- snappy-go - Google's Snappy compression algorithm in Go
- yenc - yenc decoder package
- zappy - Package zappy implements the zappy block-based compression format. It aims for a combination of good speed and reasonable compression.
- ppmd-go - Golang bindings for the LZMA SDK library. (Only binded PPMD)
Concurrency and Goroutines
- grpool - Lightweight Goroutine pool.
- pool - Go consumer goroutine pool for easy goroutine handling + time saving.
- tunny - A goroutine pool.
- worker - An easy and lightweight concurrent job framework.
Configuration File Parsers
- awsenv - a small binary that loads Amazon (AWS) environment variables for a profile
- confl - nginx config syntax, lenient, encode/decode, custom marshaling
- flagfile - Adds parsing and serialization support to the standard library flag package (adds a --flagfile option)
- gcfg - read INI-style configuration files into Go structs; supports user-defined types and subsections
- globalconf - Effortlessly persist to and read flag values from an ini config file
- goconf - a configuration file parser
- hjson - Human JSON, a configuration file format for humans. Relaxed syntax, fewer mistakes, more comments.
- jsonconfig - a JSON configuration file parser with comments support
- properties - Library for reading and writing properties files
- scribeconf - Facebook Scribe server configuration file parser
-
toml:
- go-toml-config - TOML-based config for Go
- go-toml - Go library for the TOML language
- gp-config - Subset of TOML syntax with basic and reflection APIs
- toml-go - An easy-to-use Go parser for the Toml format
- toml - TOML parser for Go with reflection
- tom-toml - TOML parser for Go, support comments/formatter/apply.
- viper - a complete configuration solution supporting YAML, TOML & JSON and integration with command line flags
- yaml:
Console User Interface
- ansi - Easily create ansi escape code strings and closures to format, color console output
- ansiterm - pkg to drive text-only consoles that respond to ANSI escape sequences
- cons - A simple package for building interactive console tools.
- gnureadline - GNU Readline bindings
- go-ansiout - Another ANSI escape code sequence tool for use with command-line applications.
- gockel - a Twitter client for text terminals
- gocui - Minimalist library aimed at creating Console User Interfaces
- gocurse - Go bindings for NCurses
- gocurses - NCurses wrapper
- go-ibgetkey - "hot key" type user input package for use in processing keystrokes in command-line applications.
- go.linenoise - Linenoise bindings (simple and easy readline with prompt, optional history, optional tab completion)
- goncurses - An ncurses library, including the form, menu and panel extensions
- gopass - Allows typing of passwords without echoing to screen
- go-pullbarz - Fancy "light bar" menus like in Lotus 123 from the DOS days. Dependent on go-ibgetkey and go-ansiout.
- go.sgr - Terminal/console colors and text decoration (bold,underlined,etc).
- go-stfl - a thin wrapper around STFL, an ncurses-based widget toolkit
- goterminal - A go library that lets you write and then re-write the text on terminal, to update progress. It works on Windows too!
- go-web-shell - Remote web shell, implements a net/http server.
- igo - A simple interactive Go interpreter built on exp/eval with some readline refinements
- oh - A Unix shell written in Go
- pty - obtain pseudo-terminal devices
- readline - A pure go implementation for GNU-Readline kind library
- termbox-go - A minimalist alternative to ncurses to build terminal-based user interfaces
- termios - Terminal support
- termon - Easy terminal-control-interface for Go.
- uilive - uilive is a go library for updating terminal output in realtime.
- uiprogress - A library to render progress bars in terminal applications.
- uitable - A library to improve readability in terminal apps using tabular data.
- yandex-weather-cli - Command line interface for Yandex weather service
Continuous Integration
- goveralls - Go integration for Coveralls.io continuous code coverage tracking system.
- overalls - Multi-Package go project coverprofile for tools like goveralls
Cryptography
- BLAKE2b - Go implementation of BLAKE2b hash function
- cryptogo - some useful cryptography-related functions, including paddings (PKCS7, X.923), PBE with random salt and IV
- cryptoPadding - Block padding schemes implemented in Go
- dkeyczar - Go port of Google'e Keyczar cryptography library
- dkrcrypt - Korean block ciphers: SEED and HIGHT
- dskipjack - Go implementation of the SKIPJACK encryption algorithm
- go-cs - concurrent ssh client.
- go-ed25519 - CGO bindings for Floodberry's ed25519-donna. Fast batch verification.
- go-hc128 - Go implementation of HC-128, an eSTREAM stream cipher
- go-jose - Go implementation of the JOSE standards
- go-minilock - Go implementation of the minilock file encryption system.
- GoSkein - Implementation of Skein hash and Threefisch crypto for Go
- keccak - A keccak (SHA-3) implementation
- ketama.go - libketama-style consistent hashing
- kindi - encryption command line tool
- openssl - openssl bindings for go
- otrcat - a general purpose command-line tool for communicating using the Off-The-Record protocol
- scrypt - Go implementation of Colin Percival's scrypt key derivation function
- simpleaes - AES encryption made easy
- siphash - SipHash: a fast short-input pseudorandom function
- SRP - SRP: Secure Remote Password - Implementation in go
- ssh.go - SSH2 Client library
- ssh-vault - encrypt/decrypt using ssh keys
- tiger - Tiger cryptographic hashing algorithm
- whirlpool - whirlpool cryptographic hashing algorithm
- go-lioness - Lioness wide-block cipher using Chacha20 and Blake2b
- go-sphinxmixcrypto - Sphinx mix network cryptographic packet format operations
Data Processing
- automi - Compose process and integration flows on Go channels
- gostatsd - Statsd server and library.
- Heka - Real time data and log file processing engine.
- Kapacitor - Framework for processing, monitoring and alerting on timeseries data.
- pipe - Several functional programming supporting in golang (Map/Reduce/Filter)
- proto - Map/Reduce/Filter etc. for Go using channels as result streams.
- regommend - Recommendation engine.
- rrd - Bindings for rrdtool.
- XConv - Convert any value between types (base type, struct, array, slice, map, etc.)
Data Structures
Collections
- collections - Several common data structures
- data-structures - A collection of data-structures (ArrayList, SortedList, Set, AVL Tree, Immutable AVL Tree, B+Tree, Ternary Search Trie, Hash Table (Separate Chaining), Linear Hash Table)
- ps - Persistent data structures
- Tideland golib - A collections library
Hashtables
- gohash - A simple linked-list hashtable that implements sets and maps
- go-maps - Go maps generalized to interfaces
Lists
- fs2/mmlist - A memory mapped list.
- GoArrayList - GoArrayList is a Go language substitute for the Java class ArrayList, with very nearly all features.
- goskiplist - A skip list implementation in Go.
- itreap - An immutable ordered list, internally a treap.
- ListDict - Python List and Dict for Go
- skip - A fast position-addressable ordered map and multimap.
- Skiplist - A fast indexable ordered multimap.
- skiplist - A skip list implementation. Highly customizable and easy to use.
- skiplist - Skiplist data structure ported from Redis's Sorted Sets.
- stackgo - A fast slice-based stack implementation.
Queues
- fifo_queue - Simple FIFO queue
- figo - A simple fifo queue with an optional thread-safe version.
- go.fifo - Simple auto-resizing thread-safe fifo queue.
- gopqueue - Priority queue at top of container/heap
- go-priority-queue - An easy to use heap implementation with a conventional priority queue interface.
- golibs/stack - A LIFO and ringbuffer package
- gringo - A minimalist queue implemented using a stripped-down lock-free ringbuffer
-
heap - A general heap package without converting elements to
interface{}
and back. - queued - A simple network queue daemon
- queue - A queue manager on top of Redis
Graphs
- graph - Library of basic graph algorithms
- graphs - Implementation of various tree, graph and network algorithms
Sets
- disjoint - Disjoint sets (union-find algorithm with path compression)
- golang-set - A full thread-safe and unsafe set implementation for Go.
- goset - A simple, thread safe Set implementation
- set - Set data structure for Go
Trees
- b - Package b implements B+trees with delayed page split/concat and O(1) enumeration. Easy production of source code for B+trees specialized for user defined key and value types is supported by a simple text replace.
- btree - Package btree implements persistent B-trees with fixed size keys, http://en.wikipedia.org/wiki/Btree
- btree - In-memory (not persistent) B-tree implementation, similar API to GoLLRB
- go-avltree - AVL tree (Adel'son-Vel'skii & Landis) with indexing added
- go-btree - Simple balance tree implementation
- go-darts - Double-ARray Trie System for Go
- GoLLRB - A Left-Leaning Red-Black (LLRB) implementation of 2-3 balanced binary search trees in Google Go
- go-merkle - Merkle-ized binary (search) trees with proofs.
- go-stree - A segment tree implementation for range queries on intervals
- go-radix, go-radix-immutable - Radix tree implementations.
- gtreap - Persistent treap implementation.
- rbtree - Yet another red-black tree implementation, with a C++ STL-like API
- rtreego - an R-Tree library
- triego - Simple trie implementation for storing words
- prefixmap - Simple trie-based prefix-map for string-based keys
Other
- bigendian - binary parsing and printing
- deepcopy - Make deep copies of data structures
- dgobloom - A Bloom Filter implementation
- epochdate - Compact dates stored as days since the Unix epoch
- etree - Parse and generate XML easily
- fsm - Minimalistic state machine for use instead of booleans
- go-algs/ed - Generalized edit-distance implementation
- go-algs/maxflow - An energy minimization tool using max-flow algorithm.
- go-extractor - Go wrapper for GNU libextractor
- gocrud - Framework for working with arbitrary depth data structures.
- Gokogiri - A lightweight libxml wrapper library
- GoNetCDF - A wrapper for the NetCDF file format library
- goop - Dynamic object-oriented programming support for Go
- gopart- Type-agnostic partitioning for anything that can be indexed in Go.
- gotoc - A protocol buffer compiler written in Go
- govalid - Data validation library
- goxml - A thin wrapper around libxml2
- hyperloglog - An implementation of the HyperLogLog and HyperLogLog++ algorithms for estimating cardinality of sets using constant memory.
- itertools - Provides generic iterable generator function along with functionality similar to the itertools python package.
- jsonv - A JSON validator
- libgob - A low level library for generating gobs from other languages
- ofxgo - A library for querying OFX servers and/or parsing the responses (and example command-line client).
- Picugen - A general-purpose hash/checksum digest generator.
- tribool - Ternary (tree-valued) logic for Go
- Tuple - Tuple is a go type that will hold mixed types / values
- vcard - Reading and writing vcard file in go. Implementation of RFC 2425 (A MIME Content-Type for Directory Information) and RFC 2426 (vCard MIME Directory Profile).
-
mxj - Marshal/Unmarshal XML doc from/to
map[string]interface{}
or JSON - xlsx - A library to help with extracting data from Microsoft Office Excel XLSX files.
- goxlsxwriter - Golang bindings for libxlsxwriter for writing XLSX (Excel) files
- simple-sstable - A simple, no-frills SSTable format and implementation in Go.
Databases
See also SQLDrivers page.
CockroachDB
- cockroachdb - A Scalable, Survivable, Strongly-Consistent SQL Database
MongoDB
- mgo - Rich MongoDB driver for Go
- rocks-stata - MongoDB Backup Utility
MySQL
- Go-MySQL-Driver - A lightweight and fast MySQL-Driver for Go's database/sql package
- MyMySQL - MySQL Client API written entirely in Go.
- TiDB - MySQL compatible distributed database modeled after Google's F1 design.
- vitess - Scaling MySQL databases for the web
- mysqlsuperdump - Generate partial and filtered dumps of MySQL databases
ODBC
PostgreSQL
- go-libpq - cgo-based Postgres driver for Go's database/sql package
- go-pgsql - A PostgreSQL client library for Go
- pgsql.go - PostgreSQL high-level client library wrapper
- pgx - Go PostgreSQL driver that is compatible with database/sql and has native interface for more performance and features
- pq - Pure Go PostgreSQL driver for database/sql
- yoke - Postgres high-availability cluster with auto-failover and automated cluster recovery
QL
- ql - A pure Go embedded (S)QL database.
Redis
- godis - Simple client for Redis
- Go-Redis - Client and Connectors for Redis key-value store
- go-redis - Redis client built on the skeleton of gomemcache
- Redigo - Go client for Redis.
- redis - Redis client for Go
RethinkDB
- GoRethink - RethinkDB Driver for Go
SQLite
- gosqlite3 - Go Interface for SQLite3
- gosqlite (forked) - A fork of gosqlite
- gosqlite - a trivial SQLite binding for Go.
- go-sqlite - A database/sql driver and standalone sqlite3 interface
- mattn's go-sqlite3 - sqlite3 driver conforming to the built-in database/sql interface
ORM
- beedb - beedb is an ORM for Go. It lets you map Go structs to tables in a database
- FilterXorm - Build conditions for xorm project.
- go-modeldb - A simple wrapper around sql.DB for struct support.
- gorm - An ORM library for Go, aims for developer friendly
- gorp - SQL mapper for Go
- go-store - Data-store library for Go that provides a set of platform-independent interfaces to persist and retrieve key-value data.
- hood - Database agnostic ORM for Go. Supports Postgres and MySQL.
- qbs - Query By Struct. Supports MySQL, PostgreSQL and SQLite3.
- sqlgen - Go code generation for SQL interaction.
- structable - Struct-to-table database mapper.
- xorm - Simple and Powerful ORM for Go.
- reform - A better ORM for Go, based on non-empty interfaces and code generation.
Multiple wrappers
- gosexy/db - an abstraction of wrappers for popular third party SQL and No-SQL database drivers.
Key-Value-Stores
- bolt - Persistent key/value store inspired by LMDB.
- dbm - Package dbm (WIP) implements a simple database engine, a hybrid of a hierarchical and/or a key-value one.
- fs2/bptree - A memory mapped B+Tree with duplicate key support. Appropriate for large amounts of data (aka +100 GB). Supports both anonymous and file backed memory maps.
- Diskv - Home-grown, disk-backed key-value store
- etcd - Highly-available key value store for shared configuration and service discovery
- gkvlite - Pure go, simple, ordered, atomic key-value persistence based on append-only file format.
- gocask - Key-value store inspired by Riak Bitcask. Can be used as pure go implementation of dbm and other kv-stores.
- goleveldb - Another implementation of LevelDB key/value in pure Go.
- kv - Yet another key/value persistent store. Atomic operations, two phase commit, automatic crash recovery, ...
- leveldb-go - This is an implementation of the LevelDB key/value database.
- levigo - levigo provides the ability to create and access LevelDB databases.
- persival - Programatic, persistent, pseudo key-value storage
Graph Databases
- cayley - 100% Go graph database, inspired by Freebase and the Google Knowledge Graph.
- Dgraph - Fast, Distributed Graph DB with a GraphQL-like API.
- go-gremlin - A Go client for the Apache TinkerTop Graph analytics framework (Gremlin server).
NoSQL
- influxdb - Scalable datastore for metrics, events, and real-time analytics
- ledisdb - A high performance NoSQL like Redis.
- nodb - A pure Go embed Nosql database with kv, list, hash, zset, bitmap, set.
- tiedot - A NoSQL document database engine using JSON for documents and queries; it can be embedded into your program, or run a stand-alone server using HTTP for an API.
Other
- cabinet - Kyoto Cabinet bindings for go
- camlistore - Personal distributed storage system for life.
- cdb.go - Create and read cdb ("constant database") files
- go-clickhouse - Connector to Yandex Clickhouse (column-oriented database)
- CodeSearch - Index and perform regex searches over large bodies of source code
- couch-go - newer maintained CouchDB database binding
- couchgo - The most feature complete CouchDB Adapter for Go. Modeled after couch.js.
- dbxml - A basic interface to Oracle Berkeley DB XML
- drive - A Google drive command line client
- Event Horizon - Toolkit for Command Query Responsibility Segregation and Event Sourcing (CQRS/ES)
- go-db-oracle - GO interface to Oracle DB
- gographite - statsd server in go (for feeding data to graphite)
- gokabinet - Go bindings for Kyoto Cabinet DBM implementation
- go-notify - GO bindings for the libnotify
- goprotodb - A binding to Berkeley DB storing records encoded as Protocol Buffers.
- go-rexster-client - Go client for the Rexster graph server (part of the TinkerPop suite of graph DB tools)
- goriak - Database driver for riak database (project homepage is now on bitbucket.org)
- goriakpbc - Riak driver using Riak's protobuf interface
- gotyrant - A Go wrapper for tokyo tyrant
- go-wikiparse - mediawiki dump parser for working with wikipedia data
- hdfs - go bindings for libhdfs
- JGDB - JGDB stands for Json Git Database
- mig - Simple SQL-based database migrations
- mongofixtures - A Go quick and dirty utility for cleaning MongoDB collections and loading fixtures into them.
- Neo4j-GO - Neo4j REST Client in Go
- neoism - Neo4j graph database client, including Cypher and Transactions support.
- null - Package for handling null values in SQL
- Optimus Cache Prime - Smart cache preloader for websites with XML sitemaps.
- piladb - Lightweight RESTful database engine based on stack data structures.
- pravasan - Simple Migration Tool (like rake db:migrate with more flexibility)
- riako - High level utility methods for interacting with Riak databases
- sqlbuilder - SQL query builder with row mapping
- squirrel - Fluent SQL generation for Go
- Sublevel - Separate sections of the same LevelDB
- Weed File System - fast distributed key-file store
- whisper-go - library for working with whisper databases
Date
- now - Now is a time toolkit for golang.
- date - A package for working with dates.
- date - For dates, date ranges, time spans, periods, and time-of-day.
- gostrftime - strftime(3) like formatting for time.Time
- tai64 - tai64 and tai64n parsing and formatting
- Tideland golib - Timex extensions
Development Tools
- cwrap - Go wrapper (binding) generator for C libraries.
- demand - Download, build, cache and run a Go app easily.
- glib - Bindings for GLib type system
- gocog - A code generator that can generate code using any language
- godepgraph - Create a dependency graph for a go package
- godev - Recompiles and runs your Go code on source change. Also watches all your imports for changes.
- godiff - diff file comparison tool with colour html output
- gonew - A tool to create new Go projects
- go-play - A HTML5 web interface for experimenting with Go code. Like http://golang.org/doc/play but runs on your computer
- gore - A Go REPL. Featured with line editing, code completion, and more
- gorun - Enables Go source files to be used as scripts.
- go-spew - Implements a deep pretty printer for Go data structures to aid in debugging
- goven - Easily copy code from another project into yours
- gowatcher - Reload a specified go program automatically by monitoring a directory.
- GoWatch - GoWatch watches your dev folder for modified files, and if a file changes it restarts the process.
- goweb - Literate programming tools for Go based on CWEB by Donald Knuth and Silvio Levy.
- hopwatch - simple debugger for Go
- hsandbox - Tool for quick experimentation with Go snippets
- Inject - Library for dependency injection in Golang (from Facebook)
- liccor - A tool for updating license headers in Go source files
- liteide - An go auto build tools and qt-based ide for Go
- Livedev - Livedev is a development proxy server that enables live code reloading.
- Martian - HTTP proxy designed for use in E2E testing.
- nvm-windows - Node.js version manager for Windows
- prettybenchcmp - Store and compare benchmarks history locally.
- rerun - Rerun watches your binary and all its dependencies so it can rebuild and relaunch when the source changes.
- syntaxhighlighter - language-independent code syntax highlighting library
- toggle - A feature toggle library with built in support for environment variable backed toggling. pluggable backing engine support.
- trace - A simple debug tracing
Emacs Tags
- egotags - ETags generator
- tago1 - etags generator for go that builds with go 1
- tago - Emacs TAGS generator for Go source
Distributed/Grid Computing
- celeriac - A library for adding support for interacting and monitoring Celery workers, tasks and events in Go
- donut - A library for building clustered services in Go
- libchan - Go-like channels over the network
- locker - A distributed lock service built on top of etcd.
- dlock - A native Go distributed lock manager (client and server) using gRPC.
- mangos - An implementation of the Scalable Protocols based on nanomsg
- redsync - Redis-based distributed mutual exclusion lock implementation
- Skynet - Skynet is distributed mesh of processes designed for highly scalable API type service provision.
- Tideland golib - Includes a map/reduce library
Documentation
- examplgen - Insert code from .go files to documents (examples to project's readme, for instance).
- godocdown - Format package documentation (godoc) as GitHub friendly Markdown
- GoDoc.org - GoDoc.org generates documentation on the fly from source on Bitbucket, Github, Google Project Hosting and Launchpad.
- golangdoc - Godoc for Golang, support translate.
- Mango - Automatically generate unix man pages from Go sources
- redoc - Commands documentation for Redis
- sphinxcontrib-golangdomain - Sphinx domain for Go
- test2doc - Generate documentation for your go units from your unit tests.
Editors
- Conception - Conception is an experimental research project, meant to become a modern IDE/Language package. demo video
- Go-bbpackage - BBEdit package for Go development
- goclipse - An Eclipse-based IDE for Go.
- Go conTEXT - Highlighter plugin
- godev - Web-based IDE for the Go language
- godit - A microemacs-like text editor written in Go.
- gofinder - (code) search tool for acme
- go-gedit - Google Go language plugin for gedit
- golab - go local application builder - a web-based Go ide
- Google Go for Idea - Google Go language plugin for Intellij IDEA
- micro - A modern and intuitive terminal-based text editor.
- tabby - Source code editor
- ViGo - A vim-like text editor.
- Wide - A Web-based IDE for Teams using Golang.
- Hectane - Lightweight SMTP client including a built-in mail queue backed by on-disk storage.
- gmail - Simple library for sending emails from a Gmail account, for people not interested in dealing with protocol details.
- go-mail - Email utilities including RFC822 messages and Google Mail defaults.
- Gomail - A simple and efficient package to send emails.
- go-ses - Amazon AWS Simple Email Service (SES) API client
- Inbucket - Inbucket is an email testing service; it will accept messages for any email address and make them available to view via a web interface.
- mail.go - Parse email messages
- MailHog - Email testing service, inspired by MailCatcher.
- MailSlurper - A handy SMTP mail server useful for local and team application development. Slurp mail into oblivion!
- chasquid - SMTP server written in Go.
Error handling
- errgo - Error tracing and annotation.
- errors - The juju/errors package provides an easy way to annotate errors without losing the original error context, and get a stack trace back out of the error for the locations that were recorded.
- goerr - Allows to make a separate(modular) and reusable error handlers. Exception-like panic() recover() mechanism using Return(error) and catching err := OR1(..)
- panicparse - Parse panics with style.
- Space Monkey errors - Go's missing errors library - stack capture, error hierarchies, error tags
- Tideland golib - Detailed error values
Encodings and Character Sets
- base58 - Human input-friendly base58 encoding
- bencode-go - Encoding and decoding the bencode format used by the BitTorrent peer-to-peer file sharing protocol
- bsonrpc - BSON codec for net/rpc
- chardet - Charset detection library ported from ICU
- charmap - Character encodings in Go
- codec-msgpack-binc High Performance and Feature-Rich Idiomatic Go Library providing encode/decode support for multiple binary serialization formats: msgpack
- colfer - high-performance binary codec
- gobson - BSON (de)serializer
- go-charset - Conversion between character sets. Native Go.
- go.enmime - MIME email parser library for Go (native)
- go-msgpack - Comprehensive MsgPack library for Go, with pack/unpack and net/rpc codec support (DEPRECATED in favor of codec )
- gopack - Bit-packing for Go
- go-simplejson - a Go package to interact with arbitrary JSON
- go-wire - Binary and JSON codec for structures and more
- go-xdr - Pure Go implementation of the data representation portion of the External Data Representation (XDR) standard protocol as specified in RFC 4506 (obsoletes RFC 1832 and RFC 1014).
- iconv-go - iconv wrapper with Reader and Writer
- magicmime -- Mime-type detection with Go bindings for libmagic
- Mahonia - Character-set conversion library in Go
- mimemagic - Detect mime-types automatically based on file contents with no external dependencies
- msgpack - Msgpack format implementation for Go
- msgpack-json - Command-line utilities to convert between msgpack and json
- nnz - String and Int primitives that serialize to JSON and SQL null
- storable - Write perl storable data
- TNetstring - tnetstrings (tagged Netstrings)
File Systems
- afero - A File Sytem abstraction system for Go
- go.fs - A virtual file system abstraction layer.
- poller - Package poller is a file-descriptor multiplexer. It allows concurent Read and Write operations from and to multiple file-descriptors.
- vfsgen - Generates a vfsdata.go file that statically implements the given virtual filesystem.
Games
- Bampf - Arcade style game based on the Vu 3D engine.
- bloxorz - Solver for bloxorz basic levels
- ChessBuddy - Play chess with Go, HTML5, WebSockets and random strangers!
- Fergulator - An NES emulator, using SDL and OpenGL
- FlappyBird - A simple flappy bird clone written in golang.
- godoku - Go Sudoku Solver - example of "share by communicating"
- Gongo - A program written in Go that plays Go
- gospeccy - A ZX Spectrum 48k Emulator
- Ludo Game - Ludo Board game powered by Go on Appengine
- pinkman - command line based chess interface to UCI compatible chess engines
- Pong - A simple Pong clone written in golang
- pong-command - Joke command,ping-like pong.
- Steven - A Minecraft client in Go
- WolfenGo - A Wolfenstein3D clone in Go, using OpenGL 2.1
GIS
- geojson - Go package to quick and easy create json data in geojson format. description
- go-geom - Efficient Open Geo Consortium-style geometries with native Go GeoJSON and WKB encoding and decoding (work-in-progress)
- go.geo - Geometry/geography library targeted at online mapping
- go.geojson - Marshalling and Unmarshalling of GeoJSON objects
- gogeos - Go library for spatial data operations and geometric algorithms
- go-proj-4 - An interface to the Cartographic Projections Library PROJ.4
- go-kml - Google Earth KML generation
- go-polyline - Google Maps polyline encoding and decoding
- UTM - Bidirectional UTM-WGS84 converter
Go Implementations
- llgo - LLVM-based Go compiler, written in Go
Graphics and Audio
- AnsiGo - Simple ANSi to PNG converter written in pure Go
- Arclight - Arclight is a tool for rendering images
- bild - A collection of image processing algorithms in pure Go
- bimg - Small Go library for fast image resize and transformation using libvips
- blend - Image processing library and rendering toolkit for Go.
- bpg - BPG decoder for Go.
- chart - Library to generate common chart (pie, bar, strip, scatter, histogram) in different output formats.
- draw2d - This package provide an API to draw 2d geometrical form on images. This library is largely inspired by postscript, cairo, HTML5 canvas.
- egl - egl bindings
- es2 - es2 bindings
- freetype-go - a Go implementation of FreeType
- gltf - library for marshaling and unmarshaling glTF
- glfw 3 - Go bindings for GLFW 3 library
- glfw - bindings to the multi-platform library for opening a window, creating an OpenGL context and managing input
- glh - OpenGL helper functions to manage text, textures, framebuffers and more
- gl - OpenGL bindings using glew
- glu - bindings to the OpenGL Utility Library
- gmask - Go adaptation of the Cmask utility for Csound
- goalsa - Go bindings for ALSA capture and playback
- go-cairo - Go wrapper for the cairo graphics library
- gocl - Go OpenCL (gocl) binding, support OpenCL 1.1/1.2/2.0 on Mac/Linux/Windows/Android
- go-csnd6 - Go binding to the Csound6 API
- go-csperfthread - Go binding to the CsoundPerformanceThread helper class of the Csound6 API
- goexif - Retrieve EXIF metadata from image files
- goflac - Go bindings for decoding and encoding FLAC audio with libFLAC
- go-gd - Go bingings for GD
- GoGL - OpenGL binding generator
- go-gnuplot - go bindings for Gnuplot
- go-gtk3 - gtk3 bindings for go
- go-heatmap - A toolkit for making heatmaps
- GoHM - H.265/HEVC HM Video Codec in Go
- goHorde - Go Bindings for the Horde3d Rendering engine.
- GoMacDraw - A mac implementation of go.wde
- go-openal - Experimental OpenAL bindings for Go
- go-opencl - A go wrapper to the OpenCL heterogeneous parallel programming library
- go-opencv - Go bindings for OpenCV / 2.x API in gocv / 1.x API in opencv
- Go-OpenGL - Go bindings for OpenGL
- Goop - Audio synthesizer engine
- goray - Raytracer written in Go, based on Yafaray
- gosc - Pure Go OSC (Open Sound Control) library
- go-taglib - Go wrapper for TagLib, an audio meta-data parser
- go-tmx - A Go library that reads Tiled's TMX files
- GoVisa - H265/HEVC Bitstream Analyzer in Go
- go-vlc - Go bindings for libVLC
- go.wde - A windowing/drawing/event interface
- goxscr - Go rewrites of xscreensaver ports
- gst - Go bindings for GStreamer
- gumble - Client library for the Mumble VoIP protocol
- hgui - Gui toolkit based on http and gtk-webkit.
- imaginary - Simple and fast HTTP microservice for image resizing and manipulation
- imaging - Package imaging provides basic image manipulation functions (resize, rotate, flip, crop, etc.) as well as simplified image loading and saving.
- netpbm - Read and write Netpbm images from Go programs
- opencv - Go bindings for OpenCV
- osmesa - Go bindings for osmesa.
- Plotinum - An API for creating plots
- portaudio - A Go binding to PortAudio
- pulsego - Go binding for PulseAudio
- pulse-simple - Go bindings for PulseAudio's Simple API, for easy audio capture and playback.
- resize - Image resizing with different interpolations.
- RiGO - RenderMan Interface implementation in Go.
- smartcrop - Content aware image cropping
- starfish - A simple Go graphics and user input library, built on SDL
- stl - library for reading, writing, and manipulating Stereolithography (.stl) files used in 3D printing
- svgo - a library for creating and outputting SVG
- tag - a library for reading tag metadata and creating metadata-invariant checksums for audio files: FLAC, all IDv3 variants, and MP4 (ACC, ALAC)
- tga - TARGA image format encoding/decoding library
- tiff - Rich TIFF/BigTIFF/GeoTIFF decoder/encoder for Go.
- twilio-go - Go client for the Twilio API.
- videoinput - Go bindings for VideoInput (Windows).
- vu - Virtual Universe. A skeleton 3D engine.
- vulkan - Golang Bindings for Vulkan API.
- webp - WebP decoder and encoder for Go.
- wg - Web Graphics, display real time go graphics in browser, with user input.
- window - Optimized moving window for real-time data
- wingo - A fully-featured window manager written in Go.
- Winhello - An example Windows GUI hello world application
- wxGo - Go Wrapper for the wxWidgets GUI
- xgb - A fork of the x-go-binding featuring support for thread safety and all X extensions.
- xgbutil - A utility library to make use of the X Go Binding easier. (Implements EWMH and ICCCM specs, key binding support, etc.)
- x-go-binding - bindings for the X windowing system
GUIs and Widget Toolkits
- go-fltk - FLTK2 GUI toolkit bindings for Go
- go-gtk - Bindings for GTK
- go-qt5 - QT5 bindings for go
- gothic - Tcl/Tk Go bindings
- gotk3 - Go bindings for GTK3, requires GTK version 3.8
- go.uik - A UI kit for Go, in Go. (project is closed)
- go-webkit2 - Go bindings for the WebKitGTK+ v2 API (w/headless browser & JavaScript support)
- Gowut - Gowut (Go Web UI Toolkit) is a full-featured, easy to use, platform independent Web UI Toolkit written in pure Go, no platform dependent native code is linked or called.
- GXUI - A Go cross platform UI library.
- iup - Bindings for IUP
- mdtwm - Tiling window manager for X
- qml - QML support for the Go language
- ui - Platform-native GUI library for Go
Hardware
- go.hid - Provides communication with USB Human Interface Devices.
- gortlsdr - A librtlsdr wrapper, which turns certain USB DVB-T dongles into a low-cost, general purpose software-defined radio receiver.
- hwio - Hardware I/O library for SoC boards including BeagleBone Black and Raspberry Pi.
- stressdisk - Stress test your disks / memory cards / USB sticks before trusting your valuable data to them
- gobot - Golang framework for robotics, drones, and the Internet of Things (IoT).
Language and Linguistics
- alpinocorpus-go - A reader and a writer for Alpino corpora.
- go-aspell - GNU Aspell spell checking library bindings for Go.
- go-language - A simple language detector using letter frequency data.
- goling - String Similarity(Cosine Similarity, Levenshtein Distance), Spell Check, Segmentation
- go.stringmetrics - String distance metrics implemented in Go
- inflect - Word inflection library (similar to Ruby ActiveSupport::Inflector). Singularize(), Pluralize(), Underscore() etc.
- libtextcat - A Go wrapper for libtextcat.
- sego - Chinese language segmenter.
- textcat - N-gram based text categorization, with support for utf-8 and raw text
Logging and Monitoring
- colog - CoLog is a prefix-based leveled execution log for Go
- cue - Fast and flexible contextual logger. Supports output to file, syslog, structured syslog, stdout/stderr, socket, Loggly, Honeybadger, Opbeat, Rollbar, and Sentry.
- epazote - Automated Microservices Supervisor.
- factorlog - Really fast, featureful logging infrastructure (supports colors, verbosity, and many formats)
- vlog - Leveled log on std log for Go
- glog - Leveled execution logs for Go
- go-logging - Supports different logging backends like syslog, file and memory. Multiple backends can be utilized with different log levels per backend and logger.
- gomol - A multi-output logging library designed for outputs that support additional metadata with log messages.
- graylog-golang - graylog-golang is a full implementation for sending messages in GELF (Graylog Extended Log Format) from Google Go (Golang) to Graylog
- jWalterWeatherman - Seamless terminal printing and file logging that’s as easy to use as fmt.Println
- immortal - A *nix cross-platform (OS agnostic) supervisor
- log4go - Go logging package akin to log4j
- logger - Go logging with buffered output and multiple writers
- logrus - Structured, pluggable logging for Go with built-in hooks for third-party loggers: Airbrake, Papertrail, Loggly, Sentry...
- MailJet Live Event Dashboard - API monitoring in real time.
- monkit - A flexible process data collection, metrics, monitoring, instrumentation, and tracing library for Go
- Prometheus - Monitoring system and time-series database.
- rfw - Rotating file writer - a 'logrotate'-aware file output for use with loggers
- sd - Writes to the systemd journal, supports user defined systemd journal fields
- seelog - Flexible dispatching, filtering, and formatting
- snap - Telemetry framework
- spacelog - Hierarchical, leveled, and structured logging library for Go
- statsgod - A rewrite of StatsD in Go.
- syslog - With this package you can create your own syslog server with your own handlers for different kind of syslog messages
- Tideland golib - Flexible logging
- timber - Configurable Logger for Go
Machine Learning
- bayesian - A naive bayes classifier.
- ctw - Context Tree Weighting and Rissanen-Langdon Arithmetic Coding
- evo - a framework for implementing evolutionary algorithms in Go.
- go-algs/maxflow Maxflow (graph-cuts) energy minimization library.
- go-galib - Genetic algorithms.
- golinear - Linear SVM and logistic regression.
- go_ml - Linear Regression, Logistic Regression, Neural Networks, Collaborative Filtering, Gaussian Multivariate Distribution.
- gorgonia - Neural network primitives library (like Theano or Tensorflow but for Go)
- go-porterstemmer - An efficient native Go clean room implementation of the Porter Stemming algorithm.
- go-pr - Gaussian classifier.
- ntm - Neural Turing Machines implementation
- paicehusk - Go implementation of the Paice/Husk Stemmer
- snowball - Snowball stemmer
- go-mind - A neural network library built in Go
- Anna - Artificial Neural Network Aspiration, aims to be self-learning and self-improving software.
Mathematics
- bayesian - Naive Bayesian Classification for Go
- blas - Go implementation of BLAS (Basic Linear Algebra Subprograms)
- cartconvert - cartography functions for the Go programming language
- clp - Go bindings for the COIN-OR Linear Programming (CLP) library
- Cvx - Convex optimization package, port of CVXOPT python package
- dice - Dice rolling library
- evaler - A simple floating point arithmetic expression evaluator
- fixed - A fixed point (Q32.32 format) math library
- geom - 2d geometry
- gini - SAT Solver/Boolean Logic Tools
- gochipmunk - Go bindings to the Chipmunk Physics library
- gocomplex - a complex number library
- godec - multi-precision decimal arithmetic
- gofd - concurrent finite domain constraint solver.
- go-fftw - Go bindings for FFTW - The Fastest Fourier Transform in the West
- go-fn - Special functions that would not fit in "math" pkg
- gographviz - Graphviz DOT language parser for Go
- go-gt - Graph theory algorithms
- go-humanize - Formatting numbers for humans.
- golibs/xmath - a collection of math functions (mostly mean algorithms)
- go-lm - Linear models in Go. Provides WLS and regression with t residuals via a cgo -> BLAS/LAPACK interface.
- go.mahalanobis - Naive implementation of the Mahalanobis distance using go.matrix
- gomat - lightweight FAST matrix and vector math
- go_matrix_cuda - GPU-Accelerated Linear Algebra Libraries based in CUDA
- go.matrix - a linear algebra package
- gonum - Scientific packages (linear algebra, BLAS, LAPACK, differentiation, plots, linear programming, statistics, ...)
- go-symexpr - Symbolic math as an AST with derivatives, simplification, and non-linear regression
- gsl - GNU Scientific Library bindings
- interval - Package interval handles sets of ordered values laying between two, possibly infinite, bounds.
- mathutil - Package mathutil provides utilities supplementing the standard 'math' and 'rand' packages.
- mt19937_64 - Mersenne Twister int64 random source
- permutation - Package permutation generates permutations of the indices of a slice
- polyclip.go - Go implementation of algorithm for Boolean operations on 2D polygons
- primes - Simple functionality for working with prime numbers.
- prime - Go version of Segmented Sieve and non Segmented sieve to produce prime numbers
- primegen.go - Sieve of Atkin prime number generator
- pso-go - A library of PSO (Particle Swarm Optimization) for Go.
- rand - 64-bit version of the math/rand package with Mersenne twister support.
- roger - A Go client for the RServer, allowing you to invoke R programs from Go.
- stats - A statistics package with common functions missing from the Golang standard library.
- statistics - GNU GSL Statistics (GPLv3)
- Tideland golib - Numerics package for statistcal analysis
- Units - Implements types, units, converter functions and some mathematics for some common physical types. lib
- vector - A small vector lib.
- humanize - formats large numbers into human readable small numbers
Microservices
- gokit - The Go Kit microservice framework (and author interview).
- go-micro - Go Micro is a microservices library which provides the fundamental building blocks for writing fault tolerant distributed systems at scale.
- kite - RPC server and client framework.
Miscellaneous
- atexit - Simple atexit library
- bíogo - Basic bioinformatics functions for the Go language.
- Breaker - Breaker enables graceful degraded mode operations by means of wrapping unreliable interservice interface points with circuit breaker primitives.
- btcrpcclient - A Websocket-enabled Bitcoin JSON-RPC client.
- cast - Safe and easy casting from one type to another in Go
- CGRates - Rating system designed to be used in telecom carriers world
- cpu - A Go package that reports processor topology
- cron - A library for running jobs (funcs) on a cron-formatted schedule
- daemonigo - A simple library to daemonize Go applications.
- dbus-go - D-Bus Go library
- desktop - Open file/uri with default application (cross platform)
- devboard - Kanban board application based on Simple-Khanban
- dioder-api - An API to IKEA dioder LED-strips
- dump - An utility that dumps Go variables, similar to PHP's var_dump
- env - Easily pull environment variables with defaults
- epub - Bindings for libepub to read epub content.
- EventBus - Lightweight event bus with async compatibility for Go .
- faker - Generate fake data, names, text, addresses, etc.
- fsnotify - File system notifications for Go
- functional - Functional programming library including a lazy list implementation and some of the most usual functions.
- GCSE - Go code search engine. source
- generate - runs go generate recursively on a specified path or environment variable and can filter by regex.
- go-amiando - Wrapper for the Amiando event management API
- go-bit - An efficient and comprehensive bitset implementation with utility bit functions.
- go-bitops - common bit operations for 32/64 bit integer
- go-business-creditcard - Validate/generate credit card checksums/names.
- gochem - A computational chemistry/biochemistry library.
- gocsv - Library for CSV parsing and emitting
- go.dbus - Native Go library for D-Bus
- go-ean - A minimal utility library for validating EAN-8 and EAN-13 and calculating checksums.
- go-eco - Functions for use in ecology
- go-erx - Extended error reporting library
- go-eventsocket - An event socket client/server library for the FreeSWITCH telephony platform.
- GoFakeIt - Fake Data Generator. 65+ different variations and examples for each
- go-fann - Go bindings for FANN, library for artificial neural networks
- GoFlow - Flow-based and dataflow programming library for Go
- goga - A genetic algorithm framework
- gogobject - GObject-introspection based bindings generator
- go-idn - a project to bring IDN support to Go, feature compatible with libidn
- GoLCS - Solve Longest Common Sequence problem in go
- golibs/as - Converting data types
- golife - Implementation of Game of Life for command line
- go-magic - A Go wrapper for libmagic
- go-magic - Simple interface to libmagic for Go Programming Language
- go-metrics - Go port of Coda Hale's Metrics library
- gommap - gommap enables Go programs to directly work with memory mapped files and devices in a very efficient way
- gomusicbrainz - MusicBrainz WS2 client library
- goneuro - Go driver for NeuroSky devices.
- goNI488 - A Go wrapper around National Instruments NI488.2 General Purpose Interface Bus (GPIB) driver.
- go-osx-plist - CoreFoundation Property List support for Go
- go-papi - Go interface to the PAPI performance API
- go.pcsclite - Go wrapper for pcsc-lite
- Go-PhysicsFS - Go bindings for the PhysicsFS archive-access abstraction library.
- go.pipeline - Library that emulates Unix pipelines
- go-pkg-mpd - A library to access the MPD music daemon
- go-pkg-xmlx - Extension to the standard Go XML package. Maintains a node tree that allows forward/backwards browser and exposes some simpel single/multi-node search functions
- goplan9 - libraries for interacting with Plan 9
- goPromise - Scheme-like delayed evaluation for Go
- go-qrand - Go client for quantum random bit generator service at random.irb.hr
- goraphing - A tool to generate a simple graph data structures from JSON data files
- go-selenium - Selenium WebDriver client for Go
- go-semvar - Semantic versions (see http:/semver.org)
- go-serial - Go binding to libserialport for serial port functionality (cgo).
- goST - A steam properties (steam table) library written for Go. This was designed as a native go equivalent to XSteam.
- go-taskstats - Go interface for Linux taskstats
-
gotenv - Loads environment variables from
.env
file - Gotgo - A Go preprocessor that provides an implementation of generics
- go-translate - Google Language Translate library
- go-uuid - Universal Unique IDentifier generator and parser
- gouuid - Pure Go UUID v3, 4 and 5 generator compatible with RFC4122
- go-villa - Some miscellaneous wrapper and small algorithms.(wrappers to slices, priority queues, path related apis, a string set type)
- Hranoprovod - Command-line calorie tracking
- lineup - A minimalistic message queue server
- mitigation - Package mitigation provides the possibility to prevent damage caused by bugs or exploits.
- nma.go - A NotifyMyAndroid client for go.
- notify - File system event notification library with API similar to os/signal.
- passwd - A parser for the /etc/passwd file
- pool - A generic worker pool
- procfile - A Procfile parser
- Prometheus Instrumentation/Metrics Client - This is a whitebox instrumentation framework for servers written in Go. It exposes programmatically-generated metrics automatically for use in the Prometheus time series collection and post-processing environment.
- randat - Devel tool for generating random bytestrings and encoding files in code-friendly forms
- recycler - A more flexible object recycling system than sync.Pool. Provides constructors and destructors for the objects as well as control over the length the free.
- replaykit - A library for replaying time series data.
- serial - Serial ports API (pure Go)
- sio - Package sio lets you access old serial junk. It's a go-gettable fork and modification of dustin's rs232 package.
- stats - Monitors Go MemStats + System stats such as Memory, Swap and CPU and sends via UDP anywhere you want for logging etc...
- symutils - Various tools and libraries to handle symbolic links
- toktok - Creates and resolves unique, typo & error-resilient, human-readable tokens
- twitterfetcher - A tool to make Twitter API requests using the Application-only authentication
- udis86 - Go bindings for libudis86
- ugo - underscore.js like toolbox for Go
- Vboxgo - user-like access to VirtualBox VMs from Go.
- Wukong - A highly extensible full-text search engine written in Go.
- xplor - Files tree browser for p9p acme
- yubigo - Yubikey OTP validation and auhtentication API client.
Music
- gmask - Go adaptation of the Cmask utility for Csound
- go-csnd6 - Go binding to the Csound6 API
- go-csperfthread - Go binding to the CsoundPerformanceThread helper class of the Csound6 API
- go-libshout - Go bindings for libshout
- gompd - A client interface for the MPD (Music Player Daemon)
- launchpad - A Go client for Novation Launchpad
- portmidi - Go bindings for libportmidi
Networking
DNS
- bitz - BitMessage client node and library
- dingo - A DNS client in Go that supports Google DNS over HTTPS
- dns - A DNS library in Go
- dnsimple - an interface to the DNSimple API
- dyndnscd - a configurable dyndns client
- GeoDNS - geo-aware authoritative DNS server
- grong - Small authoritative DNS name server
- mdns - Multicast DNS library for Go
- hostsfile - /etc/hostsfile reverse lookup IP => names
- dnss - DNS secure proxy, supports DNS over HTTPS and GRPC
- domainerator - Command line tool to combine wordlist and suffixes/TLDs into domain names and check if they are registered or not.
FTP
- ftp4go - An FTP client for Go, started as a port of the standard Python FTP client library
- ftp - Package ftp provides a minimal FTP client as defined in RFC 959
- ftps - An implementation of the FTPS protocol
- goftp - A FTP client library
HTTP
- apiproxy - proxy for HTTP/REST APIs with configurable cache timeouts
- boom - HTTP(s) benchmarking tool, Apache Benchmark replacement
- eventsource - Server-sent events for net/http server.
- fasthttp - Fast HTTP package for Go
- gbench - HTTP(s) Load Testing And Benchmarking Tool inspired by Apache Benchmark and Siege.
- gobench - HTTP/HTTPS load test and benchmark tool
- go-curl - libcurl bingding that supports go func callbacks
- goproxy - a programmable HTTP proxy.
- handlers - Collection of useful HTTP middlewares.
- gostax - A Streaming API for XML (StAX) in go
IMAP
- go-imap - An IMAP library for clients and servers.
- go-imap - IMAP client library
- go-imap - Implementation of IMAP4rev1 client, as described in RFC 3501
Instant Messaging
- hanu - Framework for writing Slack bots
- gobir - Extensible IRC bot with channel administration, seen support, and go documentation querying
- goexmpp - XMPP client implementation
- goirc - event-based stateful IRC client framework
- go-irc - Simple IRC client library
- gorobot - a modular IRC bot
- go-xmpp - XMPP client library
- ircflu - IRC bot with support for commands, scripting and web-hooks
- irc.go - Go IRC bot framework
- sirius - A fast and ultra-lightweight chat server written in Go
- xmpp-client - an XMPP client with OTR (off-the-record) support
NNTP
- go-nntp - An NNTP client and server library for go
Protocol Buffers
- gogoprotobuf - another Go implementation of Protocol Buffers, but with extensions and code generation plugins.
- golang_protobuf_extensions - Protocol Buffer extensions to support streaming message encoding and decoding.
- goprotobuf - the Go implementation of Google's Protocol Buffers
- protorpc - Google Protocol Buffers RPC for Go and C++
rsync
- replican-sync - An rsync algorithm implementation in Go
- Rsync - Rsync algorithm as a Go library
Telnet
- telnet - Package telnet provides TELNET and TELNETS client and server implementations, for the Go programming language, in a style similar to the "net/http" library (that is part of the Go standard library) including support for "middleware"; TELNETS is secure TELNET, with the TELNET protocol over a secured TLS (or SSL) connection.
- telnet - A simple interface for interacting with Telnet connection
- telnets - A client for the TELNETS (secure TELNET) protocol.
VNC
- glibvnc - Go wrapper using CGO for the libvnc library.
Websockets
- Gorilla WebSocket - WebSocket protocol implementation
- websocketd - HTTP server that converts STDIN/STDOUT program into WebSockets service. Also handles HTML and CGI.
- wst - A dead simple WebSocket tester
- ws-cli - WebSocket command line client
ZeroMQ
- goczmq - Wrapper for the CZMQv3 interface - blog post
- gozmq - Go Bindings for 0mq (zeromq/zmq)
- zmq2 - A Go interface to ZeroMQ (zmq, 0MQ) version 2.
- zmq3 - A Go interface to ZeroMQ (zmq, 0MQ) version 3.
- zmq4 - A Go interface to ZeroMQ (zmq, 0MQ) version 4.
Misc Networking
- betwixt - Betwixt implements the OMA Lightweight M2M (LWM2M) protocol for Device Management and Monitoring
- canopus - CoAP Client/Server implementation (RFC 7252)
- chunkedreader - A light weight library for reading continuous fixed sized messages from TCP streams.
- circle - Go interface to the libcircle distributed-queue API
- createsend-go - API client for Monitor http://www.campaignmonitor.com (email campaign service)
- dmrgo - Library for with Hadoop Streaming map/reduce
- doozerconfig - Go package for managing json-encoded configuration in Doozer
- doozerd - A consistent distributed data store
- endless Zero downtime restarts for go servers (Drop in replacement for http.ListenAndServe/TLS)
- gearman-go - A native implementation for Gearman API with Go.
- Glue - Robust Go and Javascript Socket Library (Alternative to Socket.io)
- goagain - zero-downtime restarts in Go
- Go Ajax - Go Ajax is a JSON-RPC implementation designed to create AJAX powered websites.
- gobeanstalk - Go Beanstalkd client library
- go-camo - Go http image proxy (camo clone) to route images through SSL
- go-dbus - A library to connect to the D-bus messaging system
- go-diameter - Diameter stack and Base Protocol (RFC 6733)
- go-smpp - SMPP 3.4 protocol implementation
- go-flowrate - Data transfer rate control (monitoring and limiting)
- gogammu - Library for sending and receiving SMS
- go-icap - ICAP (Internet Content Adaptation Protocol) server library
- gonetbench - Simple TCP benchmarking tool
- gonetcheck - package for checking general internet access
- goodhosts - Simple hosts file (/etc/hosts) management in Go
- gopacket - Packet encoding/decoding, pcap/pfring/afpacket support, TCP assembly, and more!
- gopcap - A simple wrapper around libpcap
- goq - A persistent message queue written in Go.
- goradius - A Radius client written in Go
- go-rpcgen - ProtoBuf RPC binding generator for net/rpc and AppEngine
- gorpc - RPC optimized for high load
- GoRTP - RTP / RTCP stack implementation for Go
- GoSIPs - SIP (Session Initiation Protocol) Stack in Go
- mqtt - MQTT stack in Go
- gosndfile - Go binding for libsndfile
- gosnmp - an SNMP library written in GoLang.
- go-socket.io - A Socket.IO backend implementation written in Go
- gosocks - A SOCKS (SOCKS4, SOCKS4A and SOCKS5) proxy client library in Go.
- go-sslterminator - SSL terminator proxy
- go-statsd-client - Go statsd client library
- Grumble - Mumble (VoIP) server implementation
- handlersocket-go - Go native library to connect to HandlerSocket interface of InnoDB tables
- HomeControl - an implementation of Apple's HomeKit Accessory Protocol (HAP)
- Hprose - Hprose is a High Performance Remote Object Service Engine.
- httpfstream - streaming append and follow of HTTP resources (using WebSockets)
- ipaddress - Convenient ip address functions: ip -> int, int -> ip, and IPNet broadcast address
- iris-go - Go binding for the Iris decentralized messaging framework.
- iris - Peer-to-peer messaging for back-end decentralization.
- kafka.go - Producer & Consumer for the Kafka messaging system
- lcvpn - Decentralized VPN implementation
- ldap - Basic LDAP v3 functionality for the GO programming language.
- mbxchan - An easy communication between distributed Go applications using standard Go channels and remote procedure calls.
- nagiosplugin - package for writing Nagios/monitoring plugins
- NATS - NATS distributed messaging system client for Go
- netsnail - A low-bandwidth simulator
- netutils - Simple interface for turning TCP Sockets into channels.
- npipe - a pure Go wrapper for Windows named pipes
- norm - reliable UDP using multicast and unicast sockets
- opendap - Go wrapper for Openldap
- pusher-http-go - Go library for interacting with the Pusher Realtime API
- QRP - QRP is a simple packet-based RPC protocol designed as a simple alternative to Go's rpc, that can run over UDP
- remotize - A remotize package and command that helps remotizing methods without having to chaneg their signatures for rpc
- rs232 - Serial interface for those of us who still have modems (or arduinos)
- rss - RSS parsing library.
- seamless - Reverse TCP Proxy with HTTP management API
- shell2http - Executing shell commands via simple http server
- sockjs-go - Implements server side counterpart for the SockJS-client browser library.
- SOCKS5 Server - Scalable SOCKS5 server with Access Control Lists
- spark - Emergency web server (for static files)
- spdy - SPDY library, wired into net/http, currently supporting servers only.
- statsd-go - Statsd implementation in Go, forked from gographite, which submits to Ganglia
- stompngo_examples - Examples for stompngo.
- stompngo - A Stomp 1.1 Compliant Client
- tcp_fallback - A TCP proxy implementing a simple fallback mechanism.
- tcpmeter - A TCP throughput measuring tool
- toxiproxy - Framework for simulating network conditions.
- traceroute - A traceroute implementation
- traefik - Modern, reverse proxy in Go
- Uniqush - A free and open source software which provides a unified push service for server-side notification to apps on mobile devices.
- uritemplates - A level 4 implementation of URI Templates (RFC 6570)
- VDED - Vector Delta Engine Daemon - track deltas in ever-increasing values (written in Go)
- zero-downtime-daemon - Configurable zero downtime daemon (Hot Update) framework for any kind of TCP,HTTP,FCGI services
- zeroupgrade - Upgrades network servers with zero downtime
- cwmp-proxy - Reverse cwmp proxy
- netstat-nat - Display NAT entries on Linux systems
- go-nat-pmp - A client for the NAT-PMP protocol used in Apple and open-source routers
- humanize-bytes - Command-line utilities to convert "MiB" etc to raw numbers, and back
Operating System Interfaces
- Go FUSE file system library - From-scratch implementation of the kernel-userspace communication protocol based on Russ Cox'.
- Go-fuse - Library to write FUSE filesystems in Go
- go-osx-xattr - Package xattr wraps OS X functions to manipulate the extended attributes of a file, directory and symbolic link.
- inspect/os - Metrics library for operating system measurements (Linux/MacOSX)
- service - Service will install / un-install, start / stop, and run a program as a service (daemon) on Windows/Linux and OSX.
- go-nbd - Library to write block devices for Linux in Go.
Other Random Toys, Experiments and Example Code
- goconc - A collection of useful concurrency idioms and functions for Go, compiled
- go-crazy - An experimental source-to-source compiler for go
- go-gtk-demo - A demonstration of how to use GTK+ with Go.
- go-hashmap - A hash table in pure go as an experiment in Go performance
- golang-examples - A bunch of golang examples
- GolangSortingVisualization - A visualization of various sorting algorithms in Go
- golibs - A collection of tiny go packages (and also a test repo for various CI and coverage services)
- goplay - A bunch of random small programs in Go
- lifegame-on-golang - Game of Life in Go
- linear - Playing around with the linear algebra
- pl0 - PL/0 front end, compiler and VM. .
- project euler in go - Solutions to Project Euler in Go also
- shadergo - shader test using Go
- travisci-golang-example - Travis-CI example for Go
P2P and File Sharing
- DHT - Kademlia DHT node used by Taipei-Torrent, compatible with BitTorrent
- ed2kcrawler - eDonkey2000 link crawler
- gop2p - A simple p2p app to learn Go
- go-p2p - P2P module for blockchains and more
- GoTella - A Go implementation of the Gnutella Protocol
- Taipei-Torrent - A BitTorrent client
- Tendermint - P2P Byzantine-Fault-Tolerant consensus & blockchain stack
- wgo - A simple BitTorrent client based in part on the Taipei-Torrent and gobit code
Programming
- go-clang - cgo bindings to the C-API of libclang
- godeferred - port of jsdeferred: http://cho45.stfuawsc.com/jsdeferred/
- go-galib - a library of Genetic Algorithms
- go-intset - a library to work with bounded sets of integers, including multiple alternative implementations
- go-parse - a Parsec-like parsing library
- sh - a shell/bash parser and formatter
- Shuffle - Implementation of the Fisher–Yates shuffle (or Knuth shuffle) in Go.
Resource Embedding
- fileb0x - Simple tool to embed files in go with focus on "customization" and ease to use.
- go-bindata - Package that converts any file into managable Go source code.
- go-resources - Unfancy resources embedding with Go.
- go.rice - go.rice is a Go package that makes working with resources such as html,js,css,images and templates very easy.
- statics - Embeds static resources into go files for single binary compilation + works with http.FileSystem + symlinks.
RPC
Scanner and Parser Generators
- ebnf2y - Utility for converting EBNF grammars into yacc compatible skeleton .y files.
- gocc - Go Compiler Compiler
- golex - Lex/flex like fast (DFA) scanners generator.
- gopp - Go Parser Parser
- goyacc - Goyacc is a version of yacc generating Go parsers.
- y - Package y converts .y (yacc) source files to data suitable for a parser generator.
- yy - yacc to yacc compiler.
- flexgo - A version of flex that can produce Go code.
- fsm - FSM (NFA, DFA) utilities.
- Ragel - State Machine Compiler
- lexmachine - Lexical Analysis Framework for Golang
Security
- acme - ACME certificate acquisition tool
- casbin - An authorization library that supports access control models like MAC, RBAC, ABAC
- gryffin - A large scale security scanner by Yahoo!
- hyperfox - a security tool for proxying and recording HTTP and HTTPs communications on a LAN
- lego - Let's Encrypt client and ACME library
- webseclab - a sample set of web security test cases and a toolkit to construct new ones
Simulation Modeling
- godes - Library for building discrete event simulation models
Sorting
- funnelsort - Lazy funnel sort -- a cache-oblivious sorting algorithm
- Sortutil - Nested, case-insensitive, and reverse sorting for Go.
- sortutil - Utilities supplemental to the Go standard "sort" package
- tarjan - Graph loop detection function based on Tarjan's algorithm
- timsort - Fast, stable sort, uses external comparator or sort.Interface
Source Code Management
- Gitfile - A lightweight package manager for installing git repos
-
go-deps - Analyzes and recursively installs Go package deps (library functionality similar to
go get
) - go-diff - A diff command for go languange showing semantic differences of two go source files.
- gogitver - Embeds a git tag (version string) into your application
- go-many-git - Manage and run commands across multiple git repositories
-
go-pkgs - Finds all matching packages in all of the GOPATH trees (library functionality similar to
go list all
) - go-vcs - clone and check out revs of VCS repositories (git and hg support)
- go-vcsurl - Lenient VCS repository URL parsing library
- hggofmt - A Mercurial/hg extension with a hook to
- nut - Nut is a tool to manage versioned Go source code packages, called "nuts".
- vcstool - VCS abstraction tool
Storage
- Minio - Object Storage compatible with Amazon S3 API
- libStorage - an open source, platform agnostic, storage provisioning and orchestration framework, model, and API
- OpenEBS - Containerized, Open source block storage for your containers,integrated tightly into K8S and other environments and based on distributed block storage and containerization of storage control
Strings and Text
- allot - Placeholder and wildcard text parsing for CLI tools and bots
- awk - Easy AWK-style text processing in Go
- binarydist - Binary diff and patch
- Black Friday - A markdown processor
- codename-generator - A codename generator meant for naming software releases
- columnize - format slice or array into aligned columns
- csvplus - Extends the standard Go encoding/csv package with fluent interface, lazy stream operations, indices and joins.
- csvutil - A heavy duty CSV reading and writing library.
- dgohash - Collection of string hashing functions, including Murmur3 and others
- douceur - A simple CSS parser and inliner in Go.
- dsv - A library for working with delimited separated value (DSV).
- flux - Fluent Regular Expressions in golang
- genex - Expansion of Regular Expressions
- gettext-go - GNU's gettext support, written in pure Go
- gettext - Golang bindings for gettext; Feature complete, cgo
- go-colortext - Change the color of the text and background in the console, working both in Windows and other systems.
- go-guess - Go wrapper for libguess
- goagrep - fast fuzzy string matching using precomputation
- goini - A go library to parse INI files
- golorem - lorem ipsum generator
- go-migemo - migemo extension for go (Japanese incremental text search)
- go-ngram N-gram index for Go
- goregen - A Go library for generating random strings from regular expressions.
- goskirt - Upskirt markdown library bindings for Go
- gosphinx - A Go client interface to the Sphinx standalone full-text search engine
- govalidator - Package of string validators and sanitizers
- gpKMP - String-matching in Go using the Knuth–Morris–Pratt algorithm
- hangul - Handy tools to manipulate Korean character
- html2text - Golang HTML to text conversion library
- intern - Map strings to symbols for constant-time comparisons
- kasia.go - Templating system for HTML and other text documents
- kview - Simple wrapper for kasia.go templates. It helps to modularize content of a website
- logparse - Parser for most common log formats
- NTemplate - Nested Templates
- parse - PEG parser that uses reflection to define grammar
- peg - Parsing Expression Grammer Parser
- plural - No-fuss plurals for formatting both countable and continuous ranges of values.
- polyglot - String translation utilities for Go
- pretty.go - Pretty-printing for go values
- raymond - A complete handlebars implementation in Go.
- rubex - A simple regular expression library that supports Ruby's regex syntax. It is faster than Regexp.
- sanitize - Package sanitize provides functions for sanitizing html and text.
- scanner - A text scanner that parses primitive types, analogous to Java's
- segment - An implementation of Norvig's recursive word segmentation algorithm
- sprig - Template functions for Go templates.
- strftime - strftime implementation
- strit - Package strit introduces a new type of string iterator, as well as a number of iterator constructors, wrappers and combinators.
- strogonoff - Stenography with Go
- strutil - Package strutil collects utils supplemental to the standard strings package.
- text - Text paragraph wrapping and formatting
- Tideland golib - Stringex package for statistcal analysis
- useragent - User agent string parser
- xurls - Extract urls from text
Testing
assert - Basic Assertion Library used along side native go testing, with building blocks for custom assertions
assert - Assert for go test.
assert - Handy assert package.
assert - JUnit-like asserts with excellent error messages
conex - Docker containers for integration tests
counterfeiter - Tool for generating self-contained and type-safe mocks.
downtest - Automatically run tests for all known downstream consumers of a Go package.
ginkgo - BDD Testing Framework for Go.
go2xunit - Convert "go test -v" output to xunit XML output
go-assert - Testing utils for Go.
goautotest - Automatically run unit tests when code changes are made
goblin - Minimal and Beautiful Go testing framework
Gocheck - Rich test framework with suites, fixtures, assertions, good error reporting, etc
GoConvey - Browser-based reporting, uses
go test
, supports traditional Go tests, clean DSLgocov - Code coverage testing/analysis tool
gomega - Ginkgo's Preferred Matcher Library.
gomock - a mocking framework for Go.
GoSpec - a BDD framework
gospecify - another BDD framework
go-stat - performant instrumentation/profiling for Go
go-tap - TAP (Test Anything Protocol) parser in Go
gounit - xunit for Go
GSpec - Expressive, reliable, concurrent and extensible Go test framework that makes it productive to organize and verify the mind model of software.
httpexpect - Concise, declarative, and easy to use end-to-end HTTP and REST API testing
Nitro - A quick and simple profiler For Go
mspec - BDD framework that frees you to Stub and Spec your code first with natural BDD language.
muxy - Simulating real-world distributed system failures.
Pegomock - a mocking framework based on golang/mock, but uses a DSL closely related to Mockito.
terst - A terse, easy-to-use testing library for Go
test2doc - Generate documentation for your go units from your unit tests.
testfixtures - Rails' like test fixtures for testing database driven apps.
testflight - Painless http testing in Go
Testify - A set of packages that provide many tools for testifying that your code will behave as you intend.
ut - Awesome mocks without magic.
Validation
- validator - Go Struct and Field validation, including Cross Field, Cross Struct, Map, Slice and Array diving
- validation - Simple independent struct/key-value validation
Version Control
- git (in go) - Minimal working git client in Go
- gogs - Self-hosting Git Server in Go
- semver - Semantic Versioning (SemVer) library
Virtual Machines and Languages
- agora - A dynamically typed, garbage collected, embeddable programming language built with Go
- anko - Scriptable interpreter written in golang
- forego - Forth virtual machine
- Gelo - Extensible, embeddable interpreter
- GoEmPHP - This package is built for Embedding PHP into Go
- goenv - Create an isolated environment where you install Go packages, binaries, or even C libraries. Very similar to virtualenv for Python.
- GoForth - A simple Forth parser
- golemon - A port of the Lemon parser-generator
- GoLightly - A flexible and lightweight virtual machine with runtime-configurable instruction set
- goll1e - An LL(1) parser generator for the Go programming language.
- Golog - Prolog interpreter in Go
- go-lua - Shopify's lua interpreter
- golua - A fork of GoLua that works on current releases of Go
- gomruby - mruby (mini Ruby) bindings for Go
- gopher-lua - A Lua 5.1 VM and compiler written in Go
- go-php - PHP bindings for Go
- go-python - go bindings for CPython C-API
- gotcl - Tcl interpreter in Go
- v8 - V8 JavaScript engine bindings for Go (supports V8 builds at least up to 5.8.244)
- go-v8 - V8 JavaScript engine bindings for Go
- LispEx - A dialect of Lisp extended to support for concurrent programming, written in Go.
- meme - Scheme interpreter in Go
- Minima - A language implemented in Go
- ngaro - A ngaro virtual machine to run retroForth images
- otto - A JavaScript parser and interpreter written natively in Go
- RubyGoLightly - An experimental port of TinyRb to Go
Web Applications
- Presento - The simplest possible cross-platform remote control for the presentations
- Caddy - A fast, capable, general-purpose HTTP/2 web server that's easy to use
- Digestw - A Web Application - Twitter's Timeline Digest
- fabio - A fast zero-conf load balancing HTTP router for microservices.
- fourohfourfound - A fallback HTTP server that may redirect requests with runtime configurable redirections
- Fragmenta - A CMS built in Go
- freegeoip - IP geolocation web service (web server of freegeoip.net)
- goals-calendar - A web-based Seinfeld calendar implemented in Go
- goblog - A static blog engine
- gocrawl - A polite, slim and concurrent web crawler.
- goflash - Flash player implementation in Go language
- gogallery - simple web server with an emphasis on easily browsing images
- goof - A simple http server to exchange files over http (upload/download)
- gopages - A php-like web framework that allows embedding Go code in web pages
- go_spider - A flexible ,modularization and concurrent web crawler framework.
- GoURLShortener - A frontend for the http://is.gd/ URL shortener
- gowall - A website and user system
- httpfolder - A http server to exchange files over http with basic authentication (upload/download)
- Hugo - A fast and flexible static site generator implemented in Go
- Já Vai Tarde - Unfollows monitoring for Twitter
- kurz.go - a url shortener based on web.go and redis
- Monsti - Resource friendly flat file CMS for private and small business sites.
- now.go - A simple HTTP-based to-do queue.
- Peach - A web server for multi-language, real-time synced and searchable documentation.
- rabbitmq-http - REST API for RabbitMQ
- serve-files - Far-future and gzip wrapper around the standard net/http server.
- sf_server - a tiny send file server and client
- Tideland golib - Web package for REST request handling
- Vantaa - A modular blogging API engine written in Go, Neo4j and Polymer.
- websiteskeleton - Simple net/http website skeleton
- webtf - Web app to graphical visualization of twitter timelines using the HTML5
- Wikifeat - Extensible wiki system using CouchDB written in Golang
- Freyr - Server for storing and serving readings from plant environment sensors. Integrates Golang API with ReactJS web app; uses Docker for testing/deployment.
- Rickover - Job queue with a HTTP API, backed by Postgres
Web Libraries
Authentication
- goth - Package goth provides a simple, clean, and idiomatic way to write authentication packages for Go web applications
- authcookie - Package authcookie implements creation and verification of signed authentication cookies.
- dgoogauth - Go port of Google's Authenticator library for one-time passwords
- goauth - A library for header-based OAuth over HTTP or HTTPS.
- GOAuth - OAuth Consumer
- go-http-auth - HTTP Basic and HTTP Digest authentication
- Go-OAuth - OAuth 1.0 client
- goha - Basic and Digest HTTP Authentication for Go http client
- hero - OAuth server implementation - be an OAuth provider with Go
- httpauth-go - Package httpauth provides utilities to support HTTP authentication policies. Support for both the basic authentication scheme and the digest authentication scheme are provided.
- httpauth - HTTP session (cookie) based authentication and authorization
- oauth1a - OAuth 1.0 client library
- OAuth Consumer - OAuth 1.0 consumer implementation
- otp - HOTP and TOTP library with command line replacement for Google Authenticator
- totp - Time-Based One-Time Password Algorithm, specified in RFC 6238, works with Google Authenticator
- go-otp - Package go-otp implements one-time-password generators used in 2-factor authentication systems like RSA-tokens. Currently this supports both HOTP (RFC-4226), TOTP (RFC-6238) and Base32 encoding (RFC-3548) for Google Authenticator compatibility
DOM handling
- Cascadia - CSS selector library
- GoQuery - jQuery-like DOM manipulation library, using Go's experimental HTML package.
- goq - jQuery-like declarative struct tag scraping and unmarshaling based on GoQuery.
- html-query - A fluent and functional approach to querying HTML.
- HTML Transform - A CSS selector based html scraping and transformation library
Frameworks and Toolkits
- Air - An ideal RESTful web framework for Go.
- alien - A lightweight and fast http router
- app.go - Web framework for google app engine
- arasu - A Lightning Fast Web Framework written in Go & Dart
- Beego - Beego is an open source version of the scalable, non-blocking web framework.
-
browserspeak - Generate HTML templates, CSS or SVG without writing
<
or>
- httpcoala - Library for request coalescing - handy for reverse proxies.
- falcore - Modular HTTP server framework
- fcgi_client - Go fastcgi client with fcgi params support
- florest - High-performance workflow based REST API framework in Go
- forgery - A clone of the superb Node.js web framework Express.
- Gin Web Framework - Martini-like API and httprouter gives it good performance.
- Goal - A toolkit for high productivity web development in Go language built around the concept of code generation.
- Go-Blog - Blog framework written in Go
- go-fastweb - aims to be a simple, small and clean MVC framework for go
- goku - a Web Mvc Framework for Go, mostly like ASP.NET MVC.
- Golanger - Golanger Web Framework is a lightweight framework for writing web applications in Go.
- Goldorak.Go - a web miniframework built using mustache.go, web.go and Go-Redis
- go-restful - lean package for building REST-style Web Services
- GoRest - An extensive configuration(tags) based RESTful style web-services framework.
- go-rest - A small and evil REST framework for Go
- gorilla - Gorilla web toolkit
- GoSrv - A Go HTTP server that provides simple command line functionality, config loading, request logging, graceful connection shutdown, and daemonization.
- go-start - A high level web-framework for Go
- go-urlshortener - interface to google's urlshorten API
- goweb - Lightweight RESTful web framework for Go providing Ruby on Rails style routing
- go-webproject - Modular web application framework and app server
- Gowut - Go Web UI Toolkit is a full-featured, easy to use, platform independent Web UI Toolkit written in pure Go.
- HttpRouter - A high performance HTTP request router that scales well
- limiter - Simple rate limter middleware for Go
- Macaron - Modular web framework in Go
- mango - Mango is a modular web-application framework for Go, inspired by Rack, and PEP333.
- Martini deprecated - Martini is a popular, lightweight, extensible package for writing modular web apps/services in Go
- Negroni - Idiomatic middleware for Go
- restclient - Client library for interacting with RESTful APIs.
- resty - REST client library inspired by Ruby rest-client.
- Revel - High productivity web framework modeled on Play! Framework
- Ringo - Lighweight MVC web framework inspired by Rails, Gin.
- sawsij - Provides a small, opinionated web framework.
- Tango - Micro-kernel & pluggable web framework for Go
- Tiger Tonic - framework for building JSON web services inspired by Dropwizard
- trinity - MVC framework
- Utron - MVC Framework
- Violetear - HTTP router
- web.go - a simple framework to write webapps
- wfdr - Simple web framework designed for and written in go. Works with other languages as well, but not as well.
- xweb - A web framework for Go. Just like Struts for Java.
HTML forms
- form - Complete bidirectional HTML form encoder & decoder (x-www-form-urlencoded) for arbitrary data (package encoding compatible)
- gforms - HTML forms for Go
- Go-FORM-it - Go library for easy and highly-customizable forms creation and template rendering.
- GoForms - Form data validation, cleaning and error reporting - a la django.forms
- htmlfiller - Fills in html forms with default values and errors a la Ian Bicking's htmlfill for Python
- MonstiForm - HTML form generator and validator library
- revel-csrf - Cross-Site Request Forgery (CSRF) attacks prevention for the Revel framework
- xsrftoken - A package for generating and validating tokens used in preventing XSRF attacks
Public API Wrappers
- adn - Interface to the App.net API
- anaconda - Client library for the Twitter 1.1 API
- ddg - DuckDuckGo API interface
- facebook - Up-to-date facebook graph API client. Handy and flexible
- filepicker-go - Go library for the Filepicker's REST API
- firebase - Client library for the Firebase REST API
- gh - Scriptable server and net/http middleware for GitHub Webhooks API
- github - Go library for accessing the GitHub REST API v3
- githubql - Go library for accessing the GitHub GraphQL API v4
- gobo - Client library for Sina Weibo
- gocaptcha - gocaptcha provides easy access to the reCaptcha API in go
- go-dealmap - Go library for accessing TheDealMap's API
- go-dropbox - API library for dropbox
- go-flickr - A wrapper for Flickr's API
- go-get-youtube - A simple library+client for fetching meta data of, and downloading Youtube videos
- go-gravatar - Wrapper for the Gravatar API
- go-hummingbird - Go library for accessing the Hummingbird.me API
- go-libGeoIP - GO Lib GeoIP API for Maxmind
- gominatim - Go library to access nominatim geocoding services
- gomojo - Instamojo API wrapper
- gomwapi - Access mediawiki contents like wikipedia, wiktionary in golang
- go-myanimelist - Go library for accessing the MyAnimeList API
- googtrans - unofficial go bindings for Google Translate API v2
- go-recaptcha - Handles reCaptcha form submissions in Go
- gorecurly - A Client app to use with Recurly's api
- go.strava - Official client library for the Strava V3 API
- go.stripe - a simple credit card processing library for Go using the Stripe API
- Gotank - Searchify's Go client for the IndexTank full-text search API
- go-tripit - Go API library for the TripIt web services
- GoTwilio - Twilio library for Go (golang). Very basic at the moment
- gravatar - Gravatar image/profile API library
- jsonapi - Generate JSON API from Go structs
- postmark - Access postmark API from Go
- reddit.go - Client library for Reddit API
- shorturl - Generic implementation for interacting with various URL shortening services
- Stack on Go - Go wrapper for Stack Exchange API
- stripe - Official Stripe client library
- SocialSharesCount - Wrapper API on multiple social websites to get URL share statistics
- twilio - Simple Twilio API wrapper
- twittergo - Client library for Twitter's API
- cloudcomb-go-sdk - Go client library for CloudComb
Other
- adhoc-http - Quick & dirty HTTP static file server
- assets - Helps prepares CSS and JS files for development and production of Go web apps.
- bwl - a set of libraries to help build web sites
- captcha - Image and audio captcha generator and server
- gaerecords - Lightweight wrapper around appengine/datastore providing Active Record and DBO style management of data
- get2ch-go - a library to access the 2channel Japanese web bulletin board
- gofeed - Parse RSS and Atom feeds in Go
- go-gzip-file-server - A net.http.Handler similar to FileServer that serves gzipped content
- gohaml - An implementation of the popular XHTML Abstraction Markup Language using the Go language.
- go-httpclient - a Go HTTP client with timeouts
- gojwt - Json Web Tokens for Go
- go-pkg-rss - a packages that reads RSS and Atom feeds
- gorefit - A library for theming existing websites
- goreman - foreman clone
- GoRequest - Simplified HTTP client with rich features such as proxy, timeout, and etc. ( inspired by nodejs SuperAgent )
- goroute - A very simple URL router based on named submatches of regular expression that works well with http.Handler .
- gorouter - Simple router for go to process url variables
- go-rss - Simple RSS parser and generator
- go-rss - Simple RSS parser, tested with Wordpress feeds.
- goscribble - An MPD Audioscrobble
- go-twitter - another Twitter client
- go-twitter-oauth - a simple Twitter client (supports OAuth)
- grender - Go static site generator
- halgo - HAL-compliant API client and serialisation library.
- http-gonsole - Speak HTTP like a local. (the simple, intuitive HTTP console, golang version)
- httprpc - HTTP RPC codecs (json2, soap, rest)
- HypeCMS - A flexible CMS built with Go and MongoDb.
- Kontl - A client for kon.tl's URL shortening service
- mustache.go - an implementation of the Mustache template language
- muxer - Simple muxer for a Go app without regexp
- Optimus Sitemap Generator - A universal XML sitemap generator
- passwordreset - Creation and verification of secure tokens useful for implementation of "reset forgotten password" feature in web applications.
- pat - A Sinatra style pattern muxer
- persona - remote verification API for persona
- plex - simple, small, light, regexp http muxer with chaining
- purell - tiny Go library to normalize URLs
- pusher.go - HTTP Server Push module for the standard http package
- rest2go - Based on rest.go, forked for improvements and REST consistency
- rest.go (forked) - forked rest.go for improvements and REST consistency
- robotstxt - The robots.txt exclusion protocol implementation. Allows to parse and query robots.txt file.
- seshcookie - A web session library inspired by Beaker
- soy - A Go implementation for Soy templates (Google Closure templates). High performance and i18n.
- user_agent - An HTTP User-Agent parser
- webtestutil - Web and HTTP functional testing utilities. Includes Gorilla testing support.
- aop - Aspect Oriented Programming For Go.
- yt2pod - Daemon that monitors YouTube channels and publishes audio podcasts of them
Windows
- gform - An easy to use Windows GUI toolkit for Go
- go-ole - win32 ole implementation for golang
- go-Windows-begin - for the absolute Windows-Go beginner
- w32 - Windows API wrapper for Go.
- walk - "Windows Application Library Kit" for the Go Programming Language
- Windows Command Line Shutdow - A tool to shutdown Windows Computer from Command Prompt
Unix
- inspect - Linux and MacOSX systems monitoring and diagnostics
- unixsums - Legacy Unix checksums: cksum, sum
Unsorted; please help!
The following entries have not been filed. Please help by putting these in relevant categories.
- GoBot - PoC Go HTTP Botnet
- ebml-go - EBML decoder
- go-bindata - Converts any file into manageable Go source code for embedding binary data into a Go program.
- goconsistenthash - Consistent hashing library (based on http://www.lexemetech.com/2007/11/consistent-hashing.html)
-
go-cron - A small cron job system to handle scheduled tasks, such as optimizing databases or kicking idle users from chat. The cron.go project was renamed to this for
go get
compatibility. - godebiancontrol - Golang debian control file parser
- go-gmetric - Ganglia gmetric protocol support
- gographviz - Graphviz DOT language parser for golang
- godotviz - Rendering graphics files from "DOT language". Written in golang
- dotviz-server - WebBased DOT language visualization tool written in go
- goseq - command line tool, written in Go, for creating sequence diagrams using a text-based description language.
- golor - golor is a command line tool for golang source code coloring
- gopcapreader - Presents realtime pcap data as io.Reader objects
- go.psl - Go regdom-libs/public suffix list
- go-webfinger - Simple Client Implementation of WebFinger
- httptail - tools push stdout/stderr to http chunked
- img-LinuxFr.org - A reverse-proxy cache for external images used on LinuxFr.org
- seed - Easily seed PRNGs with some entropy
- spellabc - Package spellabc implements spelling alphabet code word encoding.
- Twackup - Backs up your tweets into local files
- Tasks - A simplistic todo list manager written in Go
golang优秀实用开源项目收集
golang很多开源项目,铺天盖地,却很少有官方版。有时候真是选择乏力,选择一个优秀的流行的组件,能少走很多弯路。
整理一些最为出名和好用的开源组件(持续更新)
1.web框架
-
beego
go get github.com/astaxie/beego
http://beego.me
2.数据库
-
mongo(极有可能成为官方pkg)
go get gopkg.in/mgo.v2
http://labix.org/mgo
-
mysql
go get github.com/go-sql-driver/mysql
https://godoc.org/github.com/go-sql-driver/mysql
3.缓存
-
redis
go get github.com/garyburd/redigo/redis
https://godoc.org/github.com/garyburd/redigo/redis
-
redis-cluster(redis3.0以后支持集群)
go get github.com/chasex/redis-go-cluster
https://godoc.org/github.com/chasex/redis-go-cluster
-
memcache
go get github.com/bradfitz/gomemcache/memcache
https://godoc.org/github.com/bradfitz/gomemcache/memcache
4.MQ
-
go-nsq
go get github.com/nsqio/go-nsq
https://godoc.org/github.com/nsqio/go-nsq
go-nsq是nsq的golang client包,nsq集群更多资料 http://nsq.io/
5.书籍
-
入门
《Go语言程序设计》
中规中矩的教科书套路,附有习题,详细全面,适合入门,但新手很难看出什么是重点
《学习Go语言》快速入门,不如上一本全面
- 进阶
《Go语言圣经》重点突出,例子很到位,除了错别字比较多(不会影响阅读),堪称圣经
几款适合学习的项目:
1、cache2go
https://github.com/muesli/cache2go
比较简单的一个缓存库,代码量很少,适合新手学习,可以学习到锁、goroutines等。
2、groupcache
https://github.com/golang/groupcache
与memcached同一作者,相当于是memcached的go语言实现。
3、nsq
消息分发平台,阅读代码可以了解到很多分布式、负载均衡等方面的编程。
4、docker
https://github.com/docker/docker
时下很火的项目,个人感觉适合应用,不适合入门阅读学习,待成为了高手后可以研究下其实现。
GitHub上优秀的Go开源项目
近一年来,学习和研究Go语言,断断续续的收集了一些比较优秀的开源项目,这些项目都非常不错,可以供我们学习和研究Go用,从中可以学到很多关于Go的使用、技巧以及相关工具和方法。我把他们整理发出来,大家有兴趣可以根据自己的爱好选择一些进行研究和阅读,提升自己的能力,更好的使用Go语言,开发出更优秀的项目。
docker
无人不知的虚拟华平台,开源的应用容器引擎,借助该引擎,开发者可以打包他们的应用,移植到任何平台上。
- https://github.com/docker/docker
- 38154 stars
- 11393 forks
golang
go本身,也是用go语言实现的,包括他的编译器,要研究go源代码的可以看此项目录
- https://github.com/golang/go
- 23082 stars
- 3081 forks
*
蓝灯,一款P2P的过墙软件,他和SS不一样的是,他是分布式的,P2P的,通过蓝灯,你可以和*上网的用户共享网络,对方可以*上网,你也就*了。
- https://github.com/get*/*
- 21479 stars
- 5573 forks
kubernetes
Google出品,用于调度和管理docker的开源容器管理系统,利用他,可以方便的管理你的docker实例,哪怕非常多,也是目前最流行的docker管理系统。
- https://github.com/kubernetes/kubernetes
- 19513 stars
- 6540 forks
awesome-go
这不是一个go项目,他是一个学习go的资料网站,属于著名的awesome系列,里面关于go的资源非常详细。
- https://github.com/avelino/awesome-go
- 17182 stars
- 2154 forks
gogs
一款基于git的代码托管系统,类似于github和gitlab,不过其小巧易用,功能强大,部署方便,也有不少用户在使用。
- https://github.com/gogits/gogs
- 17004 stars
- 1887 forks
syncthing
开源的文件同步系统,它使用了其独有的对等*块交换协议,速度很快,据说可以替换BitTorrent Sync。
- https://github.com/syncthing/syncthing
- 14399 stars
- 1117 forks
hugo
一款极速的静态页面生成器,让你可以很快的搭建个人网站,提供了多套主题可供使用,并且可以自己定制,和NodeJS的Hexo是一样的。
- https://github.com/spf13/hugo
- 13926 stars
- 2110 forks
grafana
一款开源监控度量的看板系统,可以接Graphite,Elasticsearch,InfluxDB等数据源,定制化很高。
- https://github.com/grafana/grafana
- 13659 stars
- 2133 forks
etcd
一款分布式的,可靠的K-V存储系统,使用简单,速度快,又安全。
- https://github.com/coreos/etcd
- 11837 stars
- 2148 forks
hub
一款更便捷使用github的工具,包装并且扩展了git,提供了很多特性和功能,使用和git差不多。
- https://github.com/github/hub
- 9630 stars
- 881 forks
influxdb
可伸缩的数据库,使用场景主要用来存储测量数据,事件点击以及其他等实时分析数据,用来做监控性能很不错。
- https://github.com/influxdata/influxdb
- 9501 stars
- 1330 forks
caddy
快速的,跨平台的HTTP/2 Web服务器。
- https://github.com/mholt/caddy
- 9322 stars
- 607 forks
beego
国产开源的高性能Web框架,让你快速的开发Go Web应用服务,谢大主笔。
- https://github.com/astaxie/beego
- 9182 stars
- 2229 forks
martini
也是一款不错的Web框架。
- https://github.com/go-martini/martini
- 8962 stars
- 942 forks
cayley
Google开源的图数据库,这是一个NoSql数据库,适合处理复杂的,但是结构化低的数据,适用于社交网络,推荐系统等。
- https://github.com/cayleygraph/cayley
- 8885 stars
- 747 forks
nsq
一款开源的实时的,分布式的消息中间件系统。
- https://github.com/nsqio/nsq
- 7884 stars
- 1022 forks
codis
Codis是一个分布式Redis解决方案,其实就是一个数据库代理,让你在使用Redis集群的时候,就像使用单机版的Redis是一样的,对开发者透明。
- https://github.com/CodisLabs/codis
- 5171 stars
- 1340 forks
delve
这个Go开发者都知道,一款go应用开发的调试工具。
- https://github.com/derekparker/delve
- 4700 stars
- 345 forks
cobra
cobra是一个命令行go库,可以让你创建非常强大的,现代的CLI命令行应用。
- https://github.com/spf13/cobra
- 3161 stars
- 285 forks
*-go
go版本的*,大家都懂的。
- https://github.com/*/*-go
- 2195 stars
- 1839 forks
pholcus
Pholcus(幽灵蛛)是一款纯Go语言编写的支持分布式的高并发、重量级爬虫软件,定位于互联网数据采集,为具备一定Go或JS编程基础的人提供一个只需关注规则定制的功能强大的爬虫工具。
- https://github.com/henrylee2cn/pholcus
- 1814 stars
- 560 forks