Go语言(golang)开源项目大全

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)
  • go-fits - FITS (Flexible Image Transport System) format image and data reader

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'
  • goxc - A build tool with a focus on cross-compiling, packaging, versioning and distribution
  • 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

  • cache2go - A caching library with expiration capabilities and access counters
  • 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
  • groupcache - Caching and cache-filling library, intended as a replacement for memcached in many cases
  • 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
  • YBC bindings - Bindings for YBC library providing API for fast in-process blob cache

Cloud Computing

  • Docker - The Linux container runtime. Developed by dotCloud.
  • gocircuit - A 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.
  • gosync - A package for syncing data to and from S3.
  • juju - Orchestration tool (deployment, configuration and lifecycle management), developed by Canonical.
  • ShipBuilder - ShipBuilder is a minimalist open source platform as a service, developed by Jay Taylor.
  • Tsuru - Tsuru is an open source polyglot cloud computing platform as a service (PaaS), developed by Globo.com.
  • swift - Go language interface to Swift / Openstack Object Storage / Rackspace cloud files

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
  • command - Add subcommands to your CLI, provides help and usage guide.
  • 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.
  • uggo - Yet another option parser offering gnu-like option parsing. This one wraps (embeds) flagset. It also offers rudimentary pipe-detection (commands like ls behave differently when being piped to).

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
  • globalconf - Effortlessly persist to and read flag values from an ini config file
  • 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
    • gp-config - Subset of TOML syntax with basic and reflection APIs
  • yaml :
    • yaml - YAML support for the Go language, by Canonical
    • goyaml - A port of LibYAML to Go

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
  • gopass - Allows typing of passwords without echoing to screen
  • 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

  • BLAKE2b - Go implementation of BLAKE2b hash function
  • cryptoPadding - Block padding schemes implemented in Go
  • 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
  • scrypt - Go implementation of Colin Percival's scrypt key derivation function
  • simpleaes - AES encryption made easy
  • ssh.go - SSH2 Client library
  • siphash - SipHash: a fast short-input pseudorandom function
  • tiger - Tiger cryptographic hashing algorithm
  • whirlpool - whirlpool cryptographic hashing algorithm
  • cryptogo - some useful cryptography-related functions, including paddings (PKCS7, X.923), PBE with random salt and IV

Data Processing

  • Heka - Real time data and log file processing engine.
  • gostatsd - Statsd server and library.
  • proto - Map/Reduce/Filter etc. for Go using channels as result streams.
  • rrd - Bindings for rrdtool.

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
  • figo - A simple fifo queue with an optional thread-safe version.
  • queued - A simple network queue daemon

Graphs

  • goraph - Graph Visualization, Algorithms

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
  • gotree - Tree Visualization, Algorithms

Other

  • asyncwr - Asynchronous, non-blocking, wrapper for io.Writer
  • bigendian - binary parsing and printing
  • collections - Several common data structures
  • data-structures - A collection of data-structures (AVL Tree, B+Tree, Ternary Search Trie, Hash Table (Separate Chaining), Linear Hash Table)
  • 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

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

  • go-odbc - ODBC Driver for Go
  • odbc3-go - This package is wrapper around ODBC (version 3).

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
  • pgx - Go PostgreSQL driver that avoids database/sql in exchange for better PostgreSQL specific support
  • 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

SQLite

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.
  • go-modeldb - A simple wrapper around sql.DB for struct support.

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
  • etcd - Highly-available key value store for shared configuration and service discovery
  • 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.
  • dbxml - A basic interface to Oracle Berkeley DB XML
  • go-db-oracle - GO interface to Oracle DB
  • go-notify - GO bindings for the libnotify
  • go-rexster-client - Go client for the Rexster graph server (part of the TinkerPop suite of graph DB tools)
  • go-sphinx - A sphinx client package for Go, for full text search.
  • go-wikiparse - mediawiki dump parser for working with wikipedia data
  • 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
  • mig - Simple SQL-based database migrations
  • mongofixtures - A Go quick and dirty utility for cleaning MongoDB collections and loading fixtures into them.
  • Neo4j-GO - Neo4j REST Client in golang
  • neoism - Neo4j graph database client, including Cypher and Transactions support.
  • Optimus Cache Prime - Smart cache preloader for websites with XML sitemaps.
  • 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
  • squirrel - Fluent SQL generation for golang

有话要说