A curated list of awesome Go frameworks, libraries and software. Inspired by awesome-python.
- Awesome Go
- Web Frameworks
- Template Engine
- Authentication and OAuth
- Database Drivers
- Text Processing
- Natural Language Processing
- Science and Data Analysis
- Machine Learning
- Game Development
- DevOps Tools
- Code Analysis and Linter
- Code generation & ‘generics’
Full stack web frameworks.
- Martini - Martini is a powerful package for quickly writing modular web applications/services in Golang.
- Gorilla - Gorilla is a web toolkit for the Go programming language.
- Gin - Gin is a web framework written in Go! It features a martini-like API with much better performance, up to 40 times faster. If you need performance and good productivity.
- Goji - Goji is a minimalistic web framework for Golang that's high in antioxidants.
- web.go - A simple framework to write webapps in Go.
- pat - Sinatra style pattern muxer for Go’s net/http library, by the author of Sinatra.
- Revel - A high-productivity web framework for the Go language.
- Beego - beego is an open-source, high-performance web framework for the Go programming language.
- traffic - Sinatra inspired regexp/pattern mux and web framework for Go.
- httprouter - A high performance router. Use this and the standard http handlers to form a very high performance web framework.
- gocraft/web - A mux and middleware package in Go.
- mango - Mango is a modular web-application framework for Go, inspired by Rack, and PEP333.
- negroni - Idiomatic HTTP Middleware for Golang
- alice - Painless middleware chaining for Go
- muxchain - Lightweight middleware for net/http
Libraries and tools for templating and lexing.
- mustache - A Go implementation of the Mustache template language.
- kasia.go - Templating system for HTML and other text documents - go implementation.
- gold - Gold is a template engine for Go. This simplifies HTML coding in Go web application development. This is influenced by Slim and Jade.
- Razor - Razor view engine for Golang.
- pongo2 - A Django-like template-engine for Go.
- Soy - Closure templates (aka Soy templates) for Go, following the official spec
Libraries for working with forms.
- nosurf - A CSRF protection middleware for Go.
- binding - Binds form and JSON data from net/http Request to struct.
Authentication and OAuth
Libraries for implementing authentications schemes.
- goauth - A Go library for doing header-based OAuth over HTTP or HTTPS. Mostly created for working with Twitter.
- httpauth - HTTP Authentication middlewares.
- osin - Golang OAuth2 server library.
- jwt-go - Golang implementation of JSON Web Tokens (JWT).
Databases implemented in Go.
- tiedot - Your NoSQL database powered by Golang.
- diskv - A home-grown disk-backed key-value store.
- bolt - A low-level key/value database for Go.
- go-cache - An in-memory key:value store/cache (similar to Memcached) library for Go, suitable for single-machine applications.
- goleveldb - An implementation of the LevelDB key/value database in the Go.
- groupcache - Groupcache is a caching and cache-filling library, intended as a replacement for memcached in many cases.
- skydb.io - Sky is an open source database used for flexible, high performance analysis of behavioral data.
Libraties for connecting and operating databases.
- Relational Databases
- NoSQL Databases
- mgo - MongoDB driver for the Go language that implements a rich and well tested selection of features under a very simple API following standard Go idioms.
- redis - A simple, powerful Redis client for Go.
- redigo - Redigo is a Go client for the Redis database.
- Neo4j-GO - Neo4j REST Client in golang.
- gocouch - Couchdb client for Go.
- gomemcache - memcache client library for the Go programming language.
Libraries that implement email creation and sending
- email - A robust and flexible email library for Go.
- Go-MailHog - Catches mail and serves it through a dream. Inspired by MailCatcher, easier to install.
- mp - A simple cli email parser. It currently takes stdin and outputs JSON.
Libraries that implement Object-Relational Mapping or datamapping techniques.
- BeeDB - go ORM,support database/sql interface，pq/mysql/sqlite.
- GORM - The fantastic ORM library for Golang, aims to be developer friendly.
- gorp - Go Relational Persistence, ORM-ish library for Go.
- hood - Database agnostic ORM for Go.
- QBS - Stands for Query By Struct. A Go ORM.
- Xorm - Simple and powerful ORM for Go.
- upper.io/db - Single interface for interacting with different data sources through the use of adapters that wrap mature database drivers.
Libraries for manipulating images.
- img - A selection of image manipulation tools.
- svgo - Go Language Library for SVG generation.
- resize - Image resizing for the Go with common interpolation methods.
- rez - Image resizing, functionality similar to resize
- imaging - Simple Go image processing package.
- Specific Formats
- yaml - Implements a YAML 1.2 parser in Go.
- toml - TOML configuration format (encoder/decoder with reflection).
- go-pkg-xmlx - Extension to the standard Go XML package. Maintains a node tree that allows forward/backwards browsing and exposes some simple single/multi-node search functions.
- go-pkg-rss - This package reads RSS and Atom feeds and provides a caching mechanism that adheres to the feed specs.
- blackfriday - Markdown processor in Go
- github_flavored_markdown - GitHub Flavored Markdown renderer in Go.
- bluemonday - HTML Sanitizer
Natural Language Processing
Libraries for working with human languages.
- go-stem - Implementation of the porter stemming algorithm.
- snowball - Snowball stemmer port (cgo wrapper) for Go. Provides word stem extraction functionality.
- paicehusk - Golang implementation of the Paice/Husk Stemming Algorithm
- go-porterstemmer - A native Go clean room implementation of the Porter Stemming algorithm.
- stemmer - Stemmer packages for Go programming language. Includes English and German stemmers.
- snowball - Go implementation of the Snowball stemmers
- porter - This is a fairly straighforward port of Martin Porter's C implementation of the Porter stemming algorithm.
- golibstemmer - Go bindings for the snowball libstemmer library including porter 2
- snowball - Snowball Stemmer for Go Snowball native
- icu - Cgo binding for icu4c C library detection and conversion functions. Guaranteed compatibility with version 50.1.
- libtextcat - Cgo binding for libtextcat C library. Guaranteed compatibility with version 2.2.
- textcat - A Go package for n-gram based text categorization, with support for utf-8 and raw text
- go-eco - Similarity, dissimilarity and distance matrices; diversity, equitability and inequality measures; species richness estimators; coenocline models.
- MMSEGO - This is a GO implementation of MMSEG which a Chinese word splitting algorithm.
- gounidecode - Unicode transliterator (also known as unidecode) for Go
- go-nlp - Utilities for working with discrete probability distributions and other tools useful for doing NLP work.
Science and Data Analysis
Libraries for scientific computing and data analyzing.
- go.matrix - linear algebra for go
- gocomplex - A complex number library for the Go programming language.
- mudlark-go - A collection of packages providing (hopefully) useful code for use in software using Google's Go programming language.
- gostat - A statistics library for the go language
- gofrac - A (goinstallable) fractions library for go with support for basic arithmetic.
- geom - 2D geometry for golang
- blas - Implementation of BLAS (Basic Linear Algebra Subprograms)
- go-fn - Mathematical functions written in Go language, that are not covered by math pkg
- go-gt - Graph theory algorithms written in "Go" language
- vectormath - Vectormath for Go, an adaptation of the scalar C functions from Sony's Vector Math library, as found in the Bullet-2.79 source code.
Libraries for Machine Learning.
- CloudForest - Fast, flexible, multi-threaded ensembles of decision trees for machine learning in pure Go.
- mlgo - This project aims to provide minimalistic machine learning algorithms in Go.
- go-fann - Go bindings for Fast Artificial Neural Networks(FANN) library.
- neural-go - A multilayer perceptron network implemented in Go, with training via backpropagation.
- bayesian - Naive Bayesian Classification for Golang.
- shield - Bayesian text classifier with flexible tokenizers and storage backends for Go
- probab - Probability distribution functions. Bayesian inference. Written in pure Go.
- libsvm - libsvm golang version derived work based on LIBSVM 3.14.
- golinear - liblinear bindings for Go
- go-pr - Pattern recognition package in Go lang.
- go-galib - Genetic Algorithms library written in Go / golang
Libraries for testing codebases and generating test data.
- gocheck - A more advanced testing framework alternative to gotest.
- GoConvey - BDD-ish, rspec inspirated testing framework, automatic testing, coverage report and web UI
- GoSpec - BDD-style testing framework for the Go programming language.
- gospecify - This provides a BDD syntax for testing your Go code. It should be familiar to anybody who has used libraries such as rspec.
- gomock - Mocking framework for the Go programming language.
- mockhttp.go - Mock object for Go http.ResponseWriter
- assert - Asserts to Go testing
- Hamcrest - fluent framework for declarative Matcher objects that, when applied to input values, produce self-describing results.
- restit - A Go micro framework to help writing RESTful API integration test.
- ginkgo - BDD Testing Framework for Go
Libraries for manipulating audio.
- PortAudio - Go bindings for the PortAudio audio I/O library.
- gosndfile - Go bindings for libsndfile.
- go-sox - libsox bindings for go.
Libraries for manipulating video.
- gmf - Go bindings for FFmpeg av* libraries.
- gst - Go bindings for GStreamer.
- aac/h264 - Golang aac/h264 encoder and decoder.
Awesome game development libraries.
- GarageEngine - 2d game engine written in Go working on OpenGL.
- fungo - Fun Unified Game library for te gO Programming language.
- go-rpg - Go package for creating role playing games
- terrago - Fractal terrain generator in Go.
- rog - A roguelike game library written in go
- glop - Glop (Game Library Of Power) is a fairly simple cross-platform game library.
Libraries for building GUI Applications
- ui - Platform-native GUI library for Go.
- go-gtk - Go bindings for GTK
- go-qml - QML support for the Go language
Software and libraries for DevOps.
- Docker - An open platform for distributed applications for developers and sysadmins.
- juju - Automate your cloud infrastructure
- Go-AWS-Auth - AWS (Amazon Web Services) request signing library
- tsuru - An extensible and open source Platform as a Service software.
- Gogs - A Self Hosted Git Service in the Go Programming Language.
- Circuit - Circuit is a programmable platform-as-a-service (PaaS) and/or Infrastructure-as-a-Service (IaaS), for management, discovery, synchronization and orchestration of services and hosts comprising cloud applications.
- gaudi - Gaudi automates the setup of isolated and decoupled dev environments.
- fleet - A Distributed init System.
- confd - Manage local application configuration files using templates and data from etcd or consul.
- etcd - A highly-available key value store for shared configuration and service discovery.
General utilities and tools to make you're life easier.
- Postman - Command-line utility for batch-sending email.
- Mora - REST server for accessing MongoDB documents and meta data
- GVM - GVM provides an interface to manage Go versions.
- Boom - Boom is a tiny program that sends some load to a web application.
- go-selfupdate - Enable your Go applications to self update
Libraries for generating and working with log files.
- glog - Leveled execution logs for Go.
- go-log - Log lib supports level and multi handlers.
- logrus - Structured, pluggable logging for Go.
- seelog - logging functionality with flexible dispatching, filtering, and formatting.
Code Analysis and Linter
Libraries and tools for analysing, parsing and manipulation codebases.
- GoLint - Golint is a linter for Go source code.
Code generation & ‘generics’
Tools for brining generics-like functionality to Go via code generation
- gen - Code generation tool for ‘generics’-like functionality.
- go-linq - .NET LINQ-like query methods for Go.
- go generate - A proposed code generation syntax from Rob Pike.
Where to discover new Go libraries.
- Go Projects - List of projects on the Go community wiki
- godoc.org - Documentation for open source Go packages.
- r/Golang - News about Go.
- Trending Go repositories on GitHub today - Good place to find new Go libraries.
- Flipboard - Go Magazine - A collection of Go articles and tutorials.
- A Tour of Go - Interactive tour of Go
- Working with Go - An intro to go for experienced programmers
- Go By Example - A hands-on introduction to Go using annotated example programs
Your contributions are always welcome!