Skip to content

Instantly share code, notes, and snippets.

@squarism
Last active November 4, 2017 08:57
Show Gist options
  • Save squarism/914b26e316a2cb204188 to your computer and use it in GitHub Desktop.
Save squarism/914b26e316a2cb204188 to your computer and use it in GitHub Desktop.
Happy Time Golang Libraries

Happy Time Go Libraries.

Another curated list like awesome-go.
Not complete. Not authoritative. Not cupcake.
Send suggestions: @squarism :)
☆ = Github stars (in November 2016)


Adapters and Drivers

Postgres
github.com/lib/pq (2395☆)

MySQL
github.com/go-sql-driver/mysql (2868☆)

Sqlite
github.com/mattn/go-sqlite3 (1463☆)

RethinkDB
github.com/dancannon/gorethink (1067☆)

MongoDB
gopkg.in/mgo.v2

Memcached
github.com/bradfitz/gomemcache (679☆)

Redis
github.com/garyburd/redigo (2587☆)

Elastigo - A Go (golang) based Elasticsearch client library.
github.com/mattbaird/elastigo (809☆)

Databases in Go

Bolt - A low-level key/value database for Go
github.com/boltdb/bolt (5054☆)

Go-cache - An in-memory key:value store/cache (similar to Memcached), suitable for single-machine apps
github.com/patrickmn/go-cache (658☆)

Doozer - A consistent distributed data store for small amounts of extremely important data.
github.com/ha/doozerd (2781☆)

etd - A highly-available key value store for shared configuration and service discovery
github.com/coreos/etcd (11316☆)

Date

Now - date math sugar now.EndOfWeek()
github.com/jinzhu/now (717☆)

Debugging

go-spew - Implements a deep pretty printer for Go data structures to aid in debugging
go get -u github.com/davecgh/go-spew/spew (1094☆) †

delve - Debugger github.com/derekparker/delve (4479☆)

Email

Email - email for humans
github.com/jordan-wright/email (721☆)

Image Processing

Gift - image processing with no dependencies
github.com/disintegration/gift (826☆)

Internet

Hellabot - irc bot framework
github.com/whyrusleeping/hellabot (87☆)

Logging

Logrus - structured, pluggable logging for Go.
github.com/sirupsen/logrus (3498☆)

Machine Learning

Golearn - GoLearn is a 'batteries included' machine learning library for Go.
github.com/sjwhitworth/golearn (3431☆)

Shield - English text bayes classifier
github.com/eaigner/shield (88☆)

Messaging

AMQP - rabbitmq client
github.com/streadway/amqp (1002☆)

Go-workers - sidekiq compatible workers
github.com/jrallison/go-workers (782☆)

Libchan - like go channels over the network
github.com/docker/libchan (2090☆)

Gozmq - Go (golang) bindings for the ZeroMQ 4
github.com/pebbe/zmq4 (447☆)

Gnatsd - High Performance Golang Server for NATS, the cloud native messaging system. github.com/nats-io/gnatsd (2491☆)

Monitoring

I want to call this section DevOps but I won't. :)

Influxdb - Metrics! Influx->Graphana (UI) Like statsd+graphite.
github.com/influxdata/influxdb (9143☆)

statsd - Statsd server in go. github.com/quipo/statsd (112☆)

ORMs

Gorp - ORM-ish (go doesn't have objects really) library for Go
github.com/go-gorp/gorp (2255☆)

Package Management

Gpm - minimalistic package manager for Go
github.com/pote/gpm (805☆) †

Serialization

go/codec - collection of serialization libraries including msgpack github.com/ugorji/go (677☆)

Templates

Mustache - The mustache template language in Go
github.com/hoisie/mustache (809☆)

Testing

Ginkgo - BDD testing
github.com/onsi/ginkgo (1220☆)

GoConvey - a yummy Go testing tool for gophers. Works with go test.
github.com/smartystreets/goconvey (2449☆)

Gory - Factories for your Go structs. Think factory_girl.
github.com/modocache/gory (67☆)

Testify - A sacred extension to the standard go testing package (mocks) github.com/stretchr/testify (2386☆)

Looper - Like guard for go (or autotest) github.com/nathany/looper (289☆)

Text

Blackfriday - a markdown processor for Go
github.com/russross/blackfriday (2092☆)

Toml - TOML parser
github.com/BurntSushi/toml (1078☆)

YAML - yaml 1.2 parser
bitbucket.org/zombiezen/yaml (30 watchers)

Gokogiri - libxml nokogiri port
github.com/moovweb/gokogiri (465☆)

Utilities and Miscellaneous

Gojson - gojson attempts to generate go struct definitions from json documents
github.com/ChimeraCoder/gojson (1174)

Cobra - Command Line Options
github.com/spf13/cobra (2924☆)

Viper - Configuration library for 12 factor apps github.com/spf13/viper (2194☆)

Gopencils - Easily consume REST APIs with Go
github.com/bndr/gopencils (363☆)

goagain - Zero-downtime restarts in Go
github.com/rcrowley/goagain (1518☆)

Text User Interfaces

Termbox-go - cross Win/Linux TUI API to make terminal UIs
github.com/nsf/termbox-go (1702☆)

Color - ANSI color library
github.com/fatih/color (1212☆)

Web

Go.auth - Authentication API for Go web applications.
github.com/bradrydzewski/go.auth (332☆)

Binding - Binds form and JSON data from net/http Request to struct.
github.com/mholt/binding (529☆)

Nosurf - A CSRF protection middleware for Go.
github.com/justinas/nosurf (690☆)

Martini - classy web framework (sinatra inspired)
github.com/go-martini/martini (8835☆)

Render - easy rendering serialized JSON, XML, and HTML template responses
github.com/martini-contrib/render (234☆)

Negroni - idiomatic http middleware
github.com/urfave/negroni (4108☆)

Gin - Gin is like Martini but really fast
github.com/gin-gonic/gin (7981☆)

Goji - Goji is a minimalistic web framework for Golang that's high in antioxidants
github.com/zenazn/goji (3181☆)

fasthttp - Http client and server tools beyond net/http github.com/valyala/fasthttp (3492☆)

Editors and tools

you would probably not install these like libraries

GoSublime - Sublime Text 2 plugin. Does code completion and fixes imports (among other things)
github.com/DisposaBoy/GoSublime (2426☆) †

Vim-go - vim plugin
github.com/fatih/vim-go (5665☆) †

† uninstallable via go get, skipped by below install script

Quick install script

for library in `curl -s \
https://gist.github.com/squarism/914b26e316a2cb204188 \
| grep -v † | grep -E "^<code>.*</code>" | sed -e 's/<[^>]*>//g' | awk '{print $1}'`
do go get -u $library
  echo '-->' $library done.
done

# some above are not golang repos or have special installation paths
brew install gpm
go get github.com/dotcloud/docker/utils

Many of these require dependencies, like yum, rpm, apt-get or brew install fun times.

TODO: list out all the depenencies for like one platform (mac) as a hint.

brew install zmq hg gflagsl

If you don't have go this do this in homebrew:

brew install go --cross-compile-common
@joeatbayes
Copy link

Please consider adding:
https://bitbucket.org/joexdobs/meta-data-server - HTTP based Key / Value meta data service. Designed to manage Terabytes of data in forward propagated caches too large to use pure in-memory cache systems.

https://bitbucket.org/joexdobs/ml-classifier-gesture-recognition - General purpose machine learning classifier written in GO

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment