Indexes and search engines
These sites provide indexes and search engines for Go packages:
Contributing
To edit this page you must be a contributor to the go-wiki project. To get contributor access, send mail to adg@golang.org from your Google Account.
Dead projects
If you find a project in this list that is dead or broken, please either mark it as such (if you have edit permissions) or mention it in the #go-nuts IRC channel.
Table of Contents
Astronomy
- 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
- 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 build tool for Go in Go
- go-pkg-config - lightweight clone of pkg-config
- goam - A simple project build tool for Go
- godag - A frontend to the Go compiler collection
- goenv - goenv provides Go version and Go workspace management tools
- goscons - Another set of SCons builders for Go.
- gotgo - An experimental preprocesor to implement 'generics'
- GVM - GVM provides an interface to manage Go versions.
- SCons Go Tools - A collection of builders that makes it easy to compile Go projects in SCons.
Caching
- go-cache - An in-memory key:value store/cache (similar to Memcached) library for Go, suitable for single-machine
applications. - gomemcache - a memcached client
- gomemcached - A memcached server in go
- libmemcache - Fast client and server libraries speaking memcache protocol
- memcache - go memcached client, forked from YouTube Vitess
- memcached - Fast memcache server, which supports persistence and cache sizes exceeding available
RAM - memcached-bench - Benchmark tool for memcache servers
Cloud Computing
- gocircuitA 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. - Docker The Linux container runtime. Developed by dotCloud.
- Tsuru Tsuru is an open source polyglot cloud computing platform as a service (PaaS), developed by Globo.com
- gosync is a package for syncing data to and from S3.
Command-line Option Parsers
- argcfg - Use reflection to populate fields in a struct from command line arguments
- cobra - A commander for modern go CLI interactions supporting commands & POSIX/GNU flags
- getopt - Yet Another getopt Library for Go. This one is like Python's.
- getopt - full featured traditional (BSD/POSIX getopt) option parsing in Go style
- gnuflag - GNU-compatible flag parsing; substantially compatible with flag.
- go-flags - command line option parser for go
- go-options - A command line parsing library for Go
- goopt - a getopt clone to parse command-line flags
- 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
- 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.
Command-line Tools
- GoPasswordCreator - A small tool, which creates random passwords
- gich - A cross platform which utility written in Go
- gocreate - Command line utility that create files from templates.
- gojson - Command-line tool for manipulating JSON for use in developing Go code.
- jsonpp - A fast command line JSON pretty printer.
- passhash - Command-line utility to create secure password hashes
- pwdgen - A small tool, which generate human password, written in Go.
- tecla - Command-line editing library
- DevTodo2 - A small command-line per-project task list manager.
Compression
- dgolzo - LZO bindings
- 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
- 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.
Configuration File Parsers
- gcfg - read INI-style configuration files into Go structs; supports user-defined types and subsections
- goconf - a configuration file parser
- toml :
- go-toml - Go library for the TOML language
- go-toml-config - TOML-based config for Go
- toml - TOML parser for Go with reflection
- toml-go - An easy-to-use Go parser for the Toml format
- yaml :
Console User Interface
- ansi - Easily create ansi escape code strings and closures to fomat, color console output
- ansiterm - pkg to drive text-only consoles that respond to ANSI escape sequences
- gnureadline - GNU Readline bindings
- go.linenoise - Linenoise bindings (simple and easy readline with prompt, optional history, optional tab completion)
- go-stfl - a thin wrapper around STFL, an ncurses-based widget toolkit
- gockel - a Twitter client for text terminals
- gocurse - Go bindings for NCurses
- gocurses - NCurses wrapper
- goncurses - An ncurses library, including the form, menu and panel extensions
- 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
- termbox-go - A minimalist alternative to ncurses to build terminal-based user interfaces
- termios - Terminal support
- termon - Easy terminal-control-interface for Go.
- go.sgr - Terminal/console colors and text decoration (bold,underlined,etc).
- go-web-shell - Remote web shell, implements a net/http server.
Cryptography
- BLAKE-256 - Go implementation of BLAKE-256 hash function
- 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-hc128 - Go implementation of HC-128, an eSTREAM stream cipher
- 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
- passwordhash - Package passwordhash implements safe password hashing and comparison.
- scrypt - Go implementation of Colin Percival's scrypt key derivation function
- simpleaes - AES encryption made easy
- ssh.go - SSH2 Client library
- whirlpool - whirlpool cryptographic hashing algorithm
Data Structures
Lists
- 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, interally a treap.
- ListDict - Python List and Dict for Go
- skip - A fast position-addressable ordered map and multimap.
- skiplist - A skip list implementation. Highly customizable and easy to use.
- Skiplist - A fast indexable ordered multimap.
Queues
- fifo_queue - Simple FIFO queue
- go-priority-queue - An easy to use heap implementation with a conventional priority queue interface.
- go.fifo - Simple auto-resizing thread-safe fifo queue.
- gopqueue - Priority queue at top of container/heap
- gringo - A minimalist queue implemented using a stripped-down lock-free ringbuffer
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 B-trees with fixed size keys, http://en.wikipedia.org/wiki/Btree
- go-avltree - AVL tree (Adel'son-Vel'skii & Landis) with indexing added
- go-darts - Double-ARray Trie System for golang
- go-stree - A segment tree implementation for range queries on intervals
- GoLLRB - A Left-Leaning Red-Black (LLRB) implementation of 2-3 balanced binary search trees in Google Go
- rbtree - Yet another red-black tree implementation, with a C++ STL-like API
- rtreego - an R-Tree library
Other
- asyncwr - Asynchronous, non-blocking, wrapper for io.Writer
- 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
- fsm - Minimalistic state machine for use instead of booleans
- go-algs/ed - Generalized edit-distance implementation
- go-algs/maxflow - An energy minization tool using max-flow algorithm.
- go-extractor - Go wrapper for GNU libextractor
- go-maps - Go maps generalized to interfaces
- gohash - A simple linked-list hashtable that implements sets and maps
- Gokogiri - A lightweight libxml wrapper library
- GoNetCDF - A wrapper for the NetCDF file format library
- goop - Dynamic object-oriented programming support for Go
- goset - A simple, thread safe Set implementation
- gotoc - A protocol buffer compiler written in Go
- goxml - A thin wrapper around libxml2
- itertools - Provides generic iteratable 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
- Picugen - A general-purpose hash/checksum digest generator.
- ps - Persistent data structures
- samling - Package samling implements various collection data structures.
- 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). - x2j - Unmarshal XML doc into mapstringinterface{} or JSON
- xlsx - A library to help with extracting data from Microsoft Office Excel XLSX files.
Databases and Storage
See also SQLDrivers page.
MongoDB
- mgo - Rich MongoDB driver for Go
- mgo (package) - Rich MongoDB driver for Go (package reference for the Packages tab, please keep the other link since it has docs)
MySQL
- Go-MySQL-Driver - A lightweight and fast MySQL-Driver for Go's database/sql package
- MyMySQL - MySQL Client API written entirely in Go.
- vitess - Scaling MySQL databases for the web
ODBC
PostgreSQL
- go-libpq - cgo-based Postgres driver for Go's database/sql package
- go-pgsql - A PostgreSQL client library for Go
- pgsql.go - PostgreSQL high-level client library wrapper
- pq - Pure Go PostgreSQL driver for database/sql
QL
- ql - A pure Go embedded (S)QL database.
Redis
- Go-Redis - Client and Connectors for Redis key-value store
- godis - Simple client for Redis
- Tideland CGL Redis - Powerful Redis client with pub/sub support.
- Redigo - Go client for Redis.
- redis - Redis client for Golang
RethinkDB
- rethinkgo - Basic Go driver for RethinkDB
SQLite
- mattn's go-sqlite3 - sqlite3 driver conforming to the built-in database/sql interface
- gosqlite - a trivial SQLite binding for Go.
- gosqlite (forked) - A fork of gosqlite
- gosqlite3 - Go Interface for SQLite3
ORM
- beedb - beedb is an ORM for Go. It lets you map Go structs to tables in a database
- gorm - An ORM library for Go, aims for developer friendly
- gorp - SQL mapper for Go
- hood - Database agnostic ORM for Go. Supports Postgres and MySQL.
- qbs - Query By Struct. Supports MySQL, PosgreSQL and SQLite3.
- xorm - A Simple and Powerful ORM for Go.
Multiple wrappers
- gosexy/db - an abstraction of wrappers for popular third party SQL and No-SQL database drivers.
Key-Value-Stores
- dbm - Package dbm (WIP) implements a simple database engine, a hybrid of a hierarchical and/or a key-value one.
- Diskv - Home-grown, disk-backed key-value store
- gocask - Key-value store inspired by Riak Bitcask. Can be used as pure go implementation of dbm and other kv-stores.
- 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
NoSQL
- 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
- cass - Cassandra Client Lib
- cdb.go - Create and read cdb ("constant database") files
- 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.
- fswatch - mac utility for watching the file system for changes
- go-db-oracle - GO interface to Oracle DB
- go-notify - GO bindings for the libnotify
- go-sphinx - A sphinx client package for Go, for full text search.
- go-wikiparse - mediawiki dump parser for working with wikipedia data
- go.fsevents - path event lib for mac
- gographite - statsd server in go (for feeding data to graphite)
- gokabinet - Go bindings for Kyoto Cabinet DBM implementation
- goprotodb - A binding to Berkeley DB storing records encoded as Protocol Buffers.
- 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
- hdfs - go bindings for libhdfs
- JGDB - JGDB stands for Json Git Database
- mongofixtures - A Go quick and dirty utility for cleaning MongoDB collections and loading fixtures into them.
- neoism - Neo4j graph database client, including Cypher and Transactions support.
- Neo4j-GO - Neo4j REST Client in golang
- Optimus Cache Prime - Smart cache preloader for websites with XML sitemaps.
- go-rexster-client - Go client for the Rexster
graph server (part of the TinkerPop suite of graph DB tools) - riako - High level utility methods for interacting with Riak databases
- Weed File System - fast distributed key-file store
- whisper-go - library for working with whisper databases
Development Tools
- rerun - Rerun watches your binary and all its dependencies so it can rebuild and relaunch when the source changes.
- godev - Recompiles and runs your Go code on source change. Also watches all your imports for changes.
- GoWatch - GoWatch watches your dev folder for modified files, and if a file changes it restarts the process.
- Livedev - Livedev is a development proxy server that enables live code reloading.
- glib - Bindings for GLib type system
- gocog - A code generator th