Links
- Core Packages
- Go Projects
- Large listing of libraries in various categories
- Pure Go libraries (go-lang.cat-v.org)
- Some non-core packages
- Data Structures and Algorithms
- oleiade/lane
- queues, stacks and deques
- oleiade/lane
- DNS
- Embed other languages
- yuin/gopher-lua
- GopherLUA: Embed LUA in Go code and make calls from either one to the other.
- zhemao/glisp
- LISP dialect implemented in Go
- robertkrimen/otto
- JS interpreter in Go. Not super performant I think.
- yuin/gopher-lua
- Flags/Arguments Parsing
- spf13/cobra
- jessevdk/go-flags
- maruel/subcommands
- Subcommands can be nested to arbitrary depth. See example sample-complex/main.go
- But, the command is found via heuristic search including matching by levenshtein distance.
- gonuts/commander
- sub-commands, argument checks.
- gist: Zsh Tab Completion for Golang
- FUSE
- hanwen/go-fuse
- Has an example for a unionfs and zipfs.
- Russ Cox's fuse library (part of rsc) – code.google.com
- docs
- Note: The
hellofs
example, for instance, is nearly the same between this lib and the bazil one but the bazil one accepts a mount point and has some error handling. If you use this, refer to the bazil lib for better docs. - Note: On OS X Mountain Lion, if I mount the
hello world sample,
CTRL-C
the app, and try mounting it again on the same mount point, it crashes the OS and forces a reboot.
- Bazil
- github | docs
- From-scratch implementation of the kernel-userspace communication protocol. Does not use the FUSE library. On OS X, requires OSXFUSE
- Tutorial (Talk)
- Note: Just like Russ' version, on OS X
Mountain Lion, if I mount the hello world
sample,
CTRL-C
the app, and try mounting it again on the same mount point, it crashes the OS and forces a reboot.
- hanwen/go-fuse
- Process
- Proxy
- Regex
- PCRE: glenn-brown/golang-pkg-pcre
- docs
go get github.com/glenn-brown/golang-pkg-pcre/src/pkg/pcre
- moovweb/rubex
- Super Fast Regex in Go.
- Depends on the Oniguruma being available for
building. (
apt-get install libonig2
)
- PCRE: glenn-brown/golang-pkg-pcre
- REPL
- Redis
- garyburd/redigo
- Pure go and seems to be the popular one.
- gosexy/redis
- Depends on the official hiredis C lib.
- garyburd/redigo
- ZeroMQ
- Perf/profiling/etc
- Http
- uap-go
- User agent parser for Go.
- rcrowley/goagain
- Zero-downtime restarts for Go applications that
accept connections from a
net.TCPListener
ornet.UnixListener
.
- Zero-downtime restarts for Go applications that
accept connections from a
- julienschmidt/httprouter
- A high performance HTTP request router that scales well
- gin-gonic/gin
- Martini-like API with much better performance,
up to 40 times faster (uses
julienschmidt/httprouter
). gin-gonic.github.io/gin
- Martini-like API with much better performance,
up to 40 times faster (uses
- zenazn/goji
- gocraft/web
- Nice, small and fast.
- Gorilla: the golang web toolkit
- gorilla/rpc/v2
- gorilla/mux (URL+ router)
- gorilla/schema converts form values to a struct.
- gorilla/securecookie encodes and decodes authenticated and optionally encrypted cookie values.
- gorilla/sessions saves cookie and filesystem sessions and allows custom session backends.
- Middleware
- Some benchmarks
- uap-go
- Rest API servers
- code.google.com/p/gorest
- github: dougblack/sleepy
- By the author of Flask-RESTful
- docs
- Article: A Restful Micro Framework In Go
- Fairly minimal (true microframework)
- ant0ine/go-json-rest
- Lots of examples, supports middleware, CORS, etc.
- go-martini/martini
- Much more than a REST framework. Has service
injection, middleware, etc. but still implements
http.Handler
for interop.
- Much more than a REST framework. Has service
injection, middleware, etc. but still implements
- Shell
- natefinch/sh
- Like the python
sh
lib.
- Like the python
- natefinch/sh
- Templating
- Terminal
- mgutz/ansi
- Small, fast library to create ANSI colored strings and codes.
- minikomi/ansipix (Image to ansiblocks)
- See also: snippets/linux/terminal
- mgutz/ansi
- Testing
- go-check/check
- rdrdr/hamcrest
- Hamcrest matchers
- goatee: A Redis-backed notification server written in Go
- coreos/etcd
- A highly-available key value store for shared configuration and service discovery. etcd is inspired by zookeeper and doozer.
- Written in Go and uses the Raft consensus algorithm to manage a highly-available replicated log.
- Debugging
- davecgh/go-spew
- Implements a deep pretty printer for Go data structures to aid in debugging.
- kr/pretty
- docs
- pretty printing
- Diff(a, b interface{}) (desc []string)—returns a slice where each element describes a difference between a and b.
- davecgh/go-spew
- idada/v8.go
- hashicorp/raft
- bleve
- Modern text indexing for Go.
- GeoIP: AndreasBriese/ipLocator
- russross/blackfriday
- Markdown processor. It's paranoid about its input (so you can safely feed it user-supplied data).
- bluemonday
- HTML sanitizer implemented in Go. It is fast and highly configurable.
- hashicorp/mdns
- golang/groupcache
- caching and cache-filling library, intended as a replacement for memcached in many cases.
- by bradfitz.
- hashicorp/golang-lru
- implements a fixed-size thread safe LRU cache based on the cache in golang/groupcache.
- manucorporat/golru
- efficient LRU cache written in Golang that uses a approximated LRU eviction policy (the same used by redis)