Go Bindings for Various External APIs
Bindings to existing C libraries (using cgo).
Please contact me if you know of any others not listed here.
Databases and Storage
- gosqlite – SQLite 3 bindings with a very simple interface. By Russ Cox (one of the main Go developers at Google, so this is probably a good example of how to use cgo).
- gosqlite3 – Go interface for SQLite3. By kuroneko.
- gosqlite3 – Fork of the previous package with many new features and improvements. By Eleanor McHugh.
- go-sqlite3 – Another set of bindings to access SQLite3 databases. By phf.
- gotyrant – A Go wrapper for tokyo tyrant by Patrick Crosby.
- cabinet – Bindings for the latest (1.2.46) kyoto cabinet. By ww.
GUIs and Widget Toolkits
- go-gtk – Bindings for GTK. By Yasuhiro Matsumoto (aka mattn).
- wxGo – SWIG-based wrapper for the wxWidgets toolkit. By Jeroen Dirks.
- go-webkit – A webkit widget for go-gtk. By Yasuhiro Matsumoto (aka mattn).
- xgb – Low-level API to communicate with the X server modeled on XCB and supporting many X extensions. By Andrew Gallant.
- xgbutil – Utility library to make use of the X Go Binding easier. By Andrew Gallant.
- x-go-binding Port of XCB to generate Go bindings for X11 Window System protocol. Originally by Tor Andersson (when the project was known as ‘xgb’), now maintained by the Go core team at Google.
- goosurface – An interface to Cairo via GTK by LisbonAcid.
- termbox – A minimalist alternative to ncurses to build terminal-based user interfaces. By nsf.
- go-fltk – Simple bindings for the FLTK2 GUI toolkit. By Bill Burdick.
- go-iup – Bindings for the IUP cross-platform widget toolkiet. By Jeremy Cowgar.
- go-ui – Cross-platform UI tool kit based on Qt. By visualfc.
- WALK – “Windows Application Library Kit” for building native GUI apps for MS Windows. By Alexander Neumann.
- go-ole – Implementation of Win32 OLE, all in pure Go so not technically a ‘binding’. By Yasuhiro Matsumoto (aka mattn).
- gform – Windows GUI framework for Go. By Allen Dang.
Graphics and Audio
- gocairo – Golang wrapper for Cairo graphics library. By Dethe Elza.
- go-cairo – Newer bindings for Cairo. By Erik Unger.
- allegro – Basic wrapper for allegro library by Pedro Gracia.
- go-opencv – Bindings for Intel’s OpenCV computer vision library. By chaishushan.
- go-gnuplot – Bindings for the GnuPlot library. By Sebastien Binet.
- portaudio-go – Bindings for the PortAudio audio I/O library. By Gordon Klaus.
- go-gd – Bindings for the ‘gd’ dynamic graphics generation library. By Evgeny Stepanischev.
- gocanvas – Image processing library based on ImageMagick’s MagickWand. By José Carlos Nieto.
- go-openal – Experimental OpenAL bindings for Go by Peter Froehlich.
- pulsego – Go binding for PulseAudio by Moriyoshi Koizumi.
- taglib.go – Bindings for the taglib audio audio-file metadata handling lib. By Taru Karttunen.
- go-osc – Bindings for the liblo libary implementing the Open Sound Control protocol to interact with SuperCollider. By Matt Kane.
Video and Multimedia
- go-pkg-libvlc – Bindings to the libVLC media player library. By Jim Teeuwen.
- gmf – Google Go Media Framework, a wrapper around ffmpeg. By Albert Rosenfield.
- gst – GStreamer bindings. By Michał Derkacz.
- campher – Embedded Perl in Go. By Brad Fitzpatrick.
- go-python – Bindings for the CPython C API that enables you to use Python from your Go programs. By Sebastien Binet.
Text, Encodings and Regexps
- golang-pkg-pcre – Bindings for the PCRE Perl-compatible regexps library. By Florian Weimer.
- go-iconv – Bindings for the GNU libiconv character encoding conversion library. By Oibore.
- go-migemo – Bindings for the migemo Japanese incremental search library. By Yasuhiro Matsumoto (aka mattn)
Console User Interface
- readline-go – Wrapper around the GNU readline(3) library by
me___(that is Michael Elkins, not me!).
- gocurse – Go bindings for NCurses by Timmcd and jabb.
- go-term – Bindings for linux’s Terminal Information and Control termios(3) API. By John Mac.
- go-linoise – Simple line editing library that replaces GNU Readline, inspired by linenoise, and built on top of go-term. By John Mac.
- termios – Another set of termios(3) bindings for Linux. By Taru Karttunen.
- go-tecla – Wrapper for the Tecla command-line editing library. By Michael MacInnis.
Networking and Network Protocols
- gopcap – A simple wrapper around libpcap by Andreas Krennmair.
- gozero – Experiental client and server bindings for the libzmq ØMQ messaging library. By Stefan Plantikow.
- go-curl – Libcurl HTTP library bindings. By Andelf.
- libtcod-go – Libtcod is a cross-platform library of utilities for writing roguelike games. By Adam Folmert.
- fuse – Bindings to build FUSE file systems. By Taru Karttunen.
- gogmp – A more complete wrapping of the GNU Multiprecision Library based on the example bindings in misc/cgo/gmp/. By Utkan Güngördü.
- go-cblas – Bindings for the CBLAS interface. By Sebastien Binet.
- gocublas – Go wrapper for BLAS on NVIDIA’s CUDA. By Jay Booth.
- cuda4 – Go bindings for nVIDIA CUDA 4. By Arne Vansteenkiste.
Compilers and Virtual Machines
- goraptor – Bindings for the Raptor RDF parsing library. By ww.
- gorasqal – SPARQL and related RDF query language bindings and utilities. By William Waites.
- goyaml – Library to decoding and encoding YAML, wraps the C libyaml. By Gustavo Niemeyer.
- geoip.og – Simple libGeoIP wrapper. By stiletto.
- gomagic – Bindings for the libmagic file identification libary (similar to the Unix file(1) command) by Samuel Alexander Baldwin.
- go-mtp – Bindings for the libmtp implementation of the Media Transfer Protocol to interact with media devices like MP3 players. By Jim Teeuwen.
- upskirt.go – Bindings for the upskirt implementation of Markdown. By Ryan Lester.
- gosndfile – Bindings for libsndfile. By Matt Kane.
- [gorrd](http://code.google.com/p/gorrd/ – Librrd bindings. By Jeremy Wall.