2014年11月,Golang官方博客发布Go语言核心开发组成员Andrew Gerrand文章 《
Half a decade with Go》,以纪念Go语言发布5周年。Andrew Gerrand在文章中称,Go语言在工业界向云计算转型时代找到了自己的位置,目前一些重量级的云计算项目比如有名的Docker等都是用Go语言开发的,并预言“2015年将是Go语言急剧发展之年”(“ 2015 will be Go\'s biggest year yet.”)。
从国内Go语言发展和应用来看,七牛算是国内第一家选Go语言做服务端的公司。在前段时间,《技术人攻略》对七牛CEO许式伟所做的一篇深度采访(
采访原文)中,许式伟对“为何早在2011年Go语法还没完全稳定下来的情况下选择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 开源项目全集
2017年06月22日 09:19:00
阅读数:3517
一直更新中,地址: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
-
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:
-
yaml - YAML support for the Go language, by Canonical
-
goyaml - A port of LibYAML to Go
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
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
-
go-odbc - ODBC Driver for Go
-
odbc3-go - This package is wrapper around ODBC (version 3).
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
SQLite
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.
Email
-
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
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
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
-
gowsdl - WSDL code generation
-
gRPC - Google\'s multi-language RPC framework with Go support
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 DSL
-
gocov - 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优秀实用开源项目收集
2016年04月15日 17:52:07
阅读数:2405
golang很多开源项目,铺天盖地,却很少有官方版。有时候真是选择乏力,选择一个优秀的流行的组件,能少走很多弯路。
整理一些最为出名和好用的开源组件(持续更新)
1.web框架
2.数据库
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语言圣经》重点突出,例子很到位,除了错别字比较多(不会影响阅读),堪称圣经
几款适合学习的项目:
1、cache2go
https://github.com/muesli/cache2go
比较简单的一个缓存库,代码量很少,适合新手学习,可以学习到锁、goroutines等。
2、groupcache
https://github.com/golang/groupcache
与memcached同一作者,相当于是memcached的go语言实现。
3、nsq
https://github.com/bitly/nsq
消息分发平台,阅读代码可以了解到很多分布式、负载均衡等方面的编程。
4、docker
https://github.com/docker/docker
时下很火的项目,个人感觉适合应用,不适合入门阅读学习,待成为了高手后可以研究下其实现。
GitHub上优秀的Go开源项目
2016年12月30日 12:14:56
阅读数:18168
近一年来,学习和研究Go语言,断断续续的收集了一些比较优秀的开源项目,这些项目都非常不错,可以供我们学习和研究Go用,从中可以学到很多关于Go的使用、技巧以及相关工具和方法。我把他们整理发出来,大家有兴趣可以根据自己的爱好选择一些进行研究和阅读,提升自己的能力,更好的使用Go语言,开发出更优秀的项目。
docker
无人不知的虚拟华平台,开源的应用容器引擎,借助该引擎,开发者可以打包他们的应用,移植到任何平台上。
golang
go本身,也是用go语言实现的,包括他的编译器,要研究go源代码的可以看此项目录
*
蓝灯,一款P2P的过墙软件,他和SS不一样的是,他是分布式的,P2P的,通过蓝灯,你可以和*上网的用户共享网络,对方可以*上网,你也就*了。
kubernetes
Google出品,用于调度和管理docker的开源容器管理系统,利用他,可以方便的管理你的docker实例,哪怕非常多,也是目前最流行的docker管理系统。
awesome-go
这不是一个go项目,他是一个学习go的资料网站,属于著名的awesome系列,里面关于go的资源非常详细。
gogs
一款基于git的代码托管系统,类似于github和gitlab,不过其小巧易用,功能强大,部署方便,也有不少用户在使用。
syncthing
开源的文件同步系统,它使用了其独有的对等*块交换协议,速度很快,据说可以替换BitTorrent Sync。
hugo
一款极速的静态页面生成器,让你可以很快的搭建个人网站,提供了多套主题可供使用,并且可以自己定制,和NodeJS的Hexo是一样的。
grafana
一款开源监控度量的看板系统,可以接Graphite,Elasticsearch,InfluxDB等数据源,定制化很高。
etcd
一款分布式的,可靠的K-V存储系统,使用简单,速度快,又安全。
hub
一款更便捷使用github的工具,包装并且扩展了git,提供了很多特性和功能,使用和git差不多。
influxdb
可伸缩的数据库,使用场景主要用来存储测量数据,事件点击以及其他等实时分析数据,用来做监控性能很不错。
caddy
快速的,跨平台的HTTP/2 Web服务器。
beego
国产开源的高性能Web框架,让你快速的开发Go Web应用服务,谢大主笔。
martini
也是一款不错的Web框架。
cayley
Google开源的图数据库,这是一个NoSql数据库,适合处理复杂的,但是结构化低的数据,适用于社交网络,推荐系统等。
nsq
一款开源的实时的,分布式的消息中间件系统。
codis
Codis是一个分布式Redis解决方案,其实就是一个数据库代理,让你在使用Redis集群的时候,就像使用单机版的Redis是一样的,对开发者透明。
delve
这个Go开发者都知道,一款go应用开发的调试工具。
cobra
cobra是一个命令行go库,可以让你创建非常强大的,现代的CLI命令行应用。
*-go
go版本的*,大家都懂的。
pholcus
Pholcus(幽灵蛛)是一款纯Go语言编写的支持分布式的高并发、重量级爬虫软件,定位于互联网数据采集,为具备一定Go或JS编程基础的人提供一个只需关注规则定制的功能强大的爬虫工具。