Go开源框架,类库和软件集合

jopen 9年前

Go开源框架,类库和软件集合
Go开源框架,类库和软件集合.内容包括:Web框架、模板引擎、表单、身份认证、数据库、ORM框架、图片处理、文本处理、自然语言处理、机器学习、日志、代码分析、教程和(电子)书等。Inspired by awesome-python.

Contents

  • Awesome Go

    • Audio & Music
    • Authentication & OAuth
    • CSS Preprocessors
    • CUI
    • Database
    • Database Drivers
    • Date & Time
    • Distributed Systems
    • Email
    • Embeddable Scripting Languages
    • Forms
    • Game Development
    • Generation & Generics
    • GUI
    • Images
    • Logging
    • Machine Learning
    • Messaging
    • Natural Language Processing
    • Networking
    • OpenGL
    • ORM
    • Package Management
    • Science and Data Analysis
    • Serialization
    • Template Engines
    • Testing
    • Text Processing
    • Third-party APIs
    • Utilities
    • Video
    • Web Frameworks </li>
    • Windows
    • </ul> </li>
    • Tools

      • Code Analysis
      • Editor Plugins
      • Software Packages
        • DevOps Tools
        • Other Software
        • </ul> </li> </ul> </li>
        • Resources

          • Benchmarks
          • Conferences
          • E-Books
          • 推ter
          • Websites
            • Tutorials
            • </ul> </li> </ul> </li> </ul>

              Audio/Music

              Libraries for manipulating audio.

              • flac - A native Go FLAC decoder.
              • go-sox - libsox bindings for go.
              • PortAudio - Go bindings for the PortAudio audio I/O library.
              • portmidi - Go bindings for PortMidi.
              • vorbis - A "native" Go Vorbis decoder (uses CGO, but has no dependencies).

              Authentication & OAuth

              Libraries for implementing authentications schemes.

              • Go-AWS-Auth - AWS (Amazon Web Services) request signing library.
              • go.auth - Authentication API for Go web applications.
              • httpauth - HTTP Authentication middleware.
              • jwt-go - Golang implementation of JSON Web Tokens (JWT).
              • oauth2 - Successor of goauth2. Generic OAuth 2.0 package that comes with JWT, Google APIs, Compute Engine and App Engine support.
              • osin - Golang OAuth2 server library.

              CSS Preprocessors

              Libraries for preprocessing CSS files

              • gcss - Pure Go CSS Preprocessor.

              CUI

              Libraries for building CUI Applications

              • chalk - Intuitive package for prettifying terminal/console output.
              • color - Versatile package for colored terminal output.
              • go-colortext - Go library for color output in terminals.
              • termbox-go - Termbox is a library for creating cross-platform text-based interfaces.

              Database

              Generic data structures and algorithms for databases in Go.

              • bitset - Go package implementing bitsets.
              • bloom - Bloom filters implemented in Go.
              • encoding - Integer Compression Libraries for Go.

              Databases implemented in Go.

              • bolt - A low-level key/value database for Go.
              • diskv - A home-grown disk-backed key-value store.
              • 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.
              • influxdb - Scalable datastore for metrics, events, and real-time analytics
              • ledisdb - Ledisdb is a high performance NoSQL like Redis based on LevelDB.
              • tiedot - Your NoSQL database powered by Golang.

              Database tools.

              • vitess - vitess provides servers and tools which facilitate scaling of MySQL databases for large scale web services.

              Database Drivers

              Libraries for connecting and operating databases. (see Testing for mock drivers)

              • Relational Databases

                • go-adodb - Microsoft ActiveX Object DataBase driver for go that using exp/sql.
                • go-mssqldb - Microsoft MSSQL driver prototype in go language.
                • go-oci8 - Oracle driver for go that using database/sql.
                • go-pgsql - A PostgreSQL client package for the Go Programming Language.
                • go-sql-driver/mysql - MySQL driver for Go.
                • go-sqlite3 - SQLite3 driver for go that using database/sql.
                • pq - Pure Go Postgres driver for database/sql.
                </li>
              • NoSQL Databases

                • cayley - A graph database with support for multiple backends.
                • go-couchbase - Couchbase client in Go
                • gorethink - Go language driver for RethinkDB
                • gomemcache - memcache client library for the Go programming language.
                • 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.
                • neo4j - Neo4j Rest API Bindings for Golang
                • Neo4j-GO - Neo4j REST Client in golang.
                • redigo - Redigo is a Go client for the Redis database.
                • redis - A simple, powerful Redis client for Go.
                • </ul> </li> </ul>

                  Date & Time

                  Libraries for working with dates and times.

                  • now - Now is a time toolkit for golang.

                  Distributed Systems

                  Packages that help with building Distributed Systems.

                  • goraft - A Go implementation of the Raft distributed consensus protocol.
                  • raft - Golang implementation of the Raft consensus protocol, by HashiCorp.

                  Email

                  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.
                  • gomail - Gomail provides a very simple API to send emails. It supports attachments, multipart emails and encoding of non-ASCII characters.

                  Embeddable Scripting Languages

                  Embedding other languages inside your go code

                  • agora - Dynamically typed, embeddable programming language in Go
                  • anko - Scriptable interpreter written in Go
                  • gisp - Simple LISP in Go
                  • golua - Go bindings for Lua C API
                  • go-python - naive go bindings to the CPython C-API
                  • otto - A JavaScript interpreter written in Go
                  • v8-go - V8 JavaScript engine bindings for Go

                  Forms

                  Libraries for working with forms.

                  • bind - Bind form data to any Go values
                  • binding - Binds form and JSON data from net/http Request to struct.
                  • nosurf - A CSRF protection middleware for Go.

                  Game Development

                  Awesome game development libraries.

                  • GarageEngine - 2d game engine written in Go working on OpenGL.
                  • glop - Glop (Game Library Of Power) is a fairly simple cross-platform game library.
                  • go3d - A performance oriented 2D/3D math package for Go
                  • go-astar - Go implementation of the A* path finding algorithm

                  Generation & Generics

                  Tools to enhance the language with features like generics via code generation

                  • gen - Code generation tool for ‘generics’-like functionality.
                  • go-linq - .NET LINQ-like query methods for Go.
                  • pkgreflect - A Go preprocessor for package scoped reflection.

                  GUI

                  Libraries for building GUI Applications

                  • go-gtk - Go bindings for GTK
                  • gotk3 - Go bindings for GTK3.
                  • go-qml - QML support for the Go language
                  • ui - Platform-native GUI library for Go.

                  Images

                  Libraries for manipulating images.

                  • gift - Package of image processing filters.
                  • go-cairo - Go binding for the cairo graphics library.
                  • go-nude - Nudity detection with Go.
                  • go-opencv - Go bindings for OpenCV.
                  • go-webcolors - Port of webcolors library from Python to Go.
                  • img - A selection of image manipulation tools.
                  • imagick - Go binding to ImageMagick's MagickWand C API.
                  • imaging - Simple Go image processing package.
                  • resize - Image resizing for the Go with common interpolation methods.
                  • rez - Image resizing, functionality similar to resize
                  • svgo - Go Language Library for SVG generation.
                  • go-gd - Go binding for GD library

                  Logging

                  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.
                  • stdlog - Stdlog is an object-oriented library providing leveled logging. It is very useful for cron jobs.

                  Machine Learning

                  Libraries for Machine Learning.

                  • bayesian - Naive Bayesian Classification for Golang.
                  • CloudForest - Fast, flexible, multi-threaded ensembles of decision trees for machine learning in pure Go.
                  • gobrain - Neural Networks written in go
                  • go-fann - Go bindings for Fast Artificial Neural Networks(FANN) library.
                  • go-galib - Genetic Algorithms library written in Go / golang
                  • golinear - liblinear bindings for Go
                  • GoLearn - General Machine Learning library for Go.
                  • go-pr - Pattern recognition package in Go lang.
                  • goRecommend - Recommendation Algorithms library written in Go.
                  • libsvm - libsvm golang version derived work based on LIBSVM 3.14.
                  • mlgo - This project aims to provide minimalistic machine learning algorithms in Go.
                  • neural-go - A multilayer perceptron network implemented in Go, with training via backpropagation.
                  • probab - Probability distribution functions. Bayesian inference. Written in pure Go.
                  • shield - Bayesian text classifier with flexible tokenizers and storage backends for Go

                  Messaging

                  Libraries that implement messaging systems

                  • dbus - Native Go bindings for D-Bus.
                  • go-nsq - the official Go package for NSQ
                  • gopush-cluster - gopush-cluster is a go push server cluster.
                  • NATS - A lightweight and highly performant publish-subscribe and distributed queueing messaging system.
                  • Uniqush-Push - A redis backed unified push service for server-side notifications to mobile devices.

                  Natural Language Processing

                  Libraries for working with human languages.

                  • go-eco - Similarity, dissimilarity and distance matrices; diversity, equitability and inequality measures; species richness estimators; coenocline models.
                  • golibstemmer - Go bindings for the snowball libstemmer library including porter 2
                  • go-nlp - Utilities for working with discrete probability distributions and other tools useful for doing NLP work.
                  • go-porterstemmer - A native Go clean room implementation of the Porter Stemming algorithm.
                  • go-stem - Implementation of the porter stemming algorithm.
                  • gounidecode - Unicode transliterator (also known as unidecode) for Go
                  • 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.
                  • MMSEGO - This is a GO implementation of MMSEG which a Chinese word splitting algorithm.
                  • paicehusk - Golang implementation of the Paice/Husk Stemming Algorithm
                  • porter - This is a fairly straighforward port of Martin Porter's C implementation of the Porter stemming algorithm.
                  • snowball - Snowball stemmer port (cgo wrapper) for Go. Provides word stem extraction functionality Snowball native.
                  • stemmer - Stemmer packages for Go programming language. Includes English and German stemmers.
                  • textcat - A Go package for n-gram based text categorization, with support for utf-8 and raw text

                  Networking

                  Libraries for working with various layers of the network

                  • dns - Go library for working with DNS
                  • gopacket - A Go library for packet processing with libpacp bindings
                  • gopcap - A Go wrapper for libpcap
                  • gosnmp - Native Go library for performing SNMP actions

                  OpenGL

                  Libraries for using OpenGL in Go.

                  • gl - Go bindings for OpenGL. Requires an external dependency GLEW.
                  • glfw3 - Go bindings for GLFW 3.
                  • glow - Go binding generator and bindings for OpenGL.
                  • mathgl - Pure Go math package specialized for 3D math, with inspiration from GLM.

                  ORM

                  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.
                  • upper.io/db - Single interface for interacting with different data sources through the use of adapters that wrap mature database drivers.
                  • Xorm - Simple and powerful ORM for Go.

                  Package Management

                  Libraries for package and dependency management.

                  • godep - dependency tool for go, godep helps build packages reproducibly by fixing their dependencies.
                  • gom - Go Manager - bundle for go.
                  • goop - A simple dependency manager for Go (golang), inspired by Bundler.
                  • gpm - Barebones dependency manager for Go.

                  Science and Data Analysis

                  Libraries for scientific computing and data analyzing.

                  • blas - Implementation of BLAS (Basic Linear Algebra Subprograms)
                  • geom - 2D geometry for golang
                  • gocomplex - A complex number library for the Go programming language.
                  • go-fn - Mathematical functions written in Go language, that are not covered by math pkg
                  • gofrac - A (goinstallable) fractions library for go with support for basic arithmetic.
                  • go-gt - Graph theory algorithms written in "Go" language
                  • go.matrix - linear algebra for go
                  • gostat - A statistics library for the go language
                  • goraph - A pure Go graph theory library(data structure, algorith visualization)
                  • mudlark-go - A collection of packages providing (hopefully) useful code for use in software using Google's Go programming language.
                  • plotinum - Plotinum provides an API for building and drawing plots in Go.
                  • streamtools - general purpose, graphical tool for dealing with streams of data.
                  • 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.

                  Serialization

                  Libraries and tools for binary serialization

                  • cbor - Golang library for working with cbor binary format
                  • gogoprotobuf - Protocol Buffers for Go with Gadgets
                  • goprotobuf - Go support, in the form of a library and protocol compiler plugin, for Google's protocol buffers.
                  • php_session_decoder - GoLang library for working with PHP session format and PHP Serialize/Unserialize functions

                  Template Engines

                  Libraries and tools for templating and lexing.

                  • ace - Ace is an HTML template engine for Go, inspired by Slim and Jade. Ace is a refinement of Gold.
                  • amber - Amber is an elegant templating engine for Go Programming Language It is inspired from HAML and Jade.
                  • kasia.go - Templating system for HTML and other text documents - go implementation.
                  • mustache - A Go implementation of the Mustache template language.
                  • pongo2 - A Django-like template-engine for Go.
                  • Razor - Razor view engine for Golang.
                  • Soy - Closure templates (aka Soy templates) for Go, following the official spec

                  Testing

                  Libraries for testing codebases and generating test data.

                  • Testing Frameworks

                    • assert - Asserts to Go testing
                    • ginkgo - BDD Testing Framework for Go
                    • goblin - Mocha like testing framework fo Go
                    • gocheck - A more advanced testing framework alternative to gotest.
                    • GoConvey - BDD-style framework with web UI and live reload
                    • 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.
                    • 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.
                    • Testify - A sacred extension to the standard go testing package.
                    </li>
                  • Mock

                    • counterfeiter - Tool for generating self-contained mock objects
                    • gomock - Mocking framework for the Go programming language.
                    • mockhttp.go - Mock object for Go http.ResponseWriter
                    • go-sqlmock - Mock SQL driver for testing database interactions
                    • </ul> </li> </ul>

                      Text Processing

                      Libraries for parsing and manipulating texts.

                      • Specific Formats
                        • blackfriday - Markdown processor in Go </li>
                        • bluemonday - HTML Sanitizer
                        • gographviz - Parses the Graphviz DOT language.
                        • go-humanize - Formatters for time, numbers, and memory size to human readable format.
                        • go-pkg-rss - This package reads RSS and Atom feeds and provides a caching mechanism that adheres to the feed specs.
                        • 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.
                        • GoQuery - GoQuery brings a syntax and a set of features similar to jQuery to the Go language.
                        • go-runewidth - Functions to get fixed width of the character or string.
                        • slug - URL-friendly slugify with multiple languages support.
                        • toml - TOML configuration format (encoder/decoder with reflection).
                        • </ul> </li>
                        • Utility
                          • gotabulate - Easily pretty-print your tabular data with Go.
                          • govalidator - package of string validators and sanitizers for Go lang.
                          • </ul> </li> </ul>

                            Third-party APIs

                            Libraries for accessing third party APIs.

                            • 非死book - Go Library that supports the 非死book Graph API
                            • github - Go library for accessing the GitHub API.
                            • gostorm - GoStorm is a Go library that implements the communications protocol required to write Storm spouts and Bolts in Go that communicate with the Storm shells.
                            • hipchat - This project implements a golang client library for the Hipchat API.
                            • hipchat (xmpp) - A golang package to communicate with HipChat over XMPP.
                            • mixpanel - Mixpanel is a library for tracking events and sending Mixpanel profile updates to Mixpanel from your go applications.
                            • rrdaclient - Go Library to access statdns.com API, which is in turn RRDA API. DNS Queries over HTTP.
                            • smite - Go package to wraps access to the Smite game API.
                            • snapchat - Go wrapper for the snapchat API

                            Utilities

                            General utilities and tools to make your life easier.

                            • cli - A small package for building command line apps in Go.
                            • cli-init - The easy way to start building Golang command-line application.
                            • coop - Cheat sheet for some of the common concurrent flows in Go.
                            • godropbox - Common libraries for writing Go services/applications from Dropbox.
                            • gopencils - Small and simple package to easily consume REST APIs.
                            • goreq - Minimal and simple request library for Go language.
                            • gorequest - Simplified HTTP client with rich features for Go.
                            • gotenv - Load environment variables from .env or any io.Reader in Go
                            • go-debug - Conditional debug logging for Golang libraries & applications
                            • go-dry - DRY (don't repeat yourself) package for Go.
                            • go-underscore - A useful collection of helpfully functional Go collection utilities.
                            • lrserver - LiveReload server for Go
                            • mp - A simple cli email parser. It currently takes stdin and outputs JSON.
                            • ngrok - Introspected tunnels to localhost.
                            • okrun - go run error steamroller
                            • peco - Simplistic interactive filtering tool
                            • profile - Simple profiling support package for Go
                            • sqlx - provides a set of extensions on top of the excellent built-in database/sql package
                            • xlsx - Library to simplify reading the XML format used by recent version of Microsoft Excel in Go programs.

                            Video

                            Libraries for manipulating video.

                            • aac/h264 - Golang aac/h264 encoder and decoder.
                            • gmf - Go bindings for FFmpeg av* libraries.
                            • gst - Go bindings for GStreamer.

                            Web Frameworks

                            Full stack web frameworks.

                            • Beego - beego is an open-source, high-performance web framework 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.
                            • Goat - A minimalistic REST API server in Go
                            • gocraft/web - A mux and middleware package in Go.
                            • Goji - Goji is a minimalistic web framework for Golang that's high in antioxidants.
                            • Gorilla - Gorilla is a web toolkit for the Go programming language.
                            • go-relax - A framework of pluggable components to build RESTful API's
                            • go-rest - A small and evil REST framework for Go
                            • httprouter - A high performance router. Use this and the standard http handlers to form a very high performance web framework.
                            • mango - Mango is a modular web-application framework for Go, inspired by Rack, and PEP333.
                            • Martini - Martini is a powerful package for quickly writing modular web applications/services in Golang.
                            • 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.
                            • sawsij - lightweight, open-source web framework for building high-performance, data-driven web applications.
                            • tigertonic - A Go framework for building JSON web services inspired by Dropwizard
                            • traffic - Sinatra inspired regexp/pattern mux and web framework for Go.
                            • web.go - A simple framework to write webapps in Go.

                            Middlewares

                            Libraries for creating HTTP middlewares.

                            • alice - Painless middleware chaining for Go.
                            • go-wrap - Small middlewares package for net/http.
                            • interpose - Minimalist net/http middleware for golang
                            • muxchain - Lightweight middleware for net/http.
                            • negroni - Idiomatic HTTP middleware for Golang.
                            • render - Go package for easily rendering JSON, XML, and HTML template responses.

                            Tools

                            Go software and plugins.

                            Code Analysis

                            • doc - Go documentation tool that produces an alternative doc format.
                            • errcheck - Errcheck is a program for checking for unchecked errors in Go programs.
                            • gcvis - Visualise Go program GC trace data in real time.
                            • goast-viewer - Web based Golang AST visualizer.
                            • GoCover.io - GoCover.io offers the code coverage of any golang package as a service.
                            • goimports - Tool to fix (add, remove) your Go imports automatically.
                            • GoLint - Golint is a linter for Go source code.
                            • Golint online - Lints online Go source files on GitHub, Bitbucket and Google Project Hosting using the golint package.
                            • validate - Automatically validates struct fields with tags.

                            Editor Plugins

                            • go-lang-idea-plugin Go plugin for IntelliJ IDEA.
                            • gocode - An autocompletion daemon for the Go programming language
                            • GoSublime - A Golang plugin collection for the text editor SublimeText 2 providing code completion and other IDE-like features.
                            • velour - An IRC client for the acme editor.
                            • vim-compiler-go - A Vim plugin to highlight syntax errors on save.
                            • vim-go - Go development plugin for Vim.
                            • Watch - Runs a command in an acme win on file changes.

                            Software Packages

                            Software written in Go.

                            DevOps Tools

                            • aptly - aptly is a Debian repository management tool
                            • Boom - Boom is a tiny program that sends some load to a web application.
                            • gaudi - Gaudi automates the setup of isolated and decoupled dev environments.
                            • gobrew - gobrew lets you easily switch between multiple versions of go.
                            • GoBuild - Online compile Go projects to Windows, Linux and MacOSX.
                            • godbg - Web-based gdb front-end application.
                            • Gogs - A Self Hosted Git Service in the Go Programming Language.
                            • gonative - Tool which creates a build of Go that can cross compile to all platforms while still using the Cgo-enabled versions of the stdlib packages.
                            • go-selfupdate - Enable your Go applications to self update.
                            • gox - A dead simple, no frills Go cross compile tool.
                            • goxc - build tool for Go, with a focus on cross-compiling and packaging.
                            • GVM - GVM provides an interface to manage Go versions.
                            • hk - Heroku command-line interface in Go.
                            • Mora - REST server for accessing MongoDB documents and meta data.
                            • Packer - Packer is a tool for creating identical machine images for multiple platforms from a single source configuration.
                            • Rodent - Rodent helps you manage Go versions, projects and track dependencies.

                            Other Software

                            • 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.
                            • confd - Manage local application configuration files using templates and data from etcd or consul.
                            • Docker - An open platform for distributed applications for developers and sysadmins.
                            • etcd - A highly-available key value store for shared configuration and service discovery.
                            • fleet - A Distributed init System.
                            • gocc - Gocc is a compiler kit for Go written in Go.
                            • Gor - Http traffic replication tool, for replaying traffic from production to stage/dev environments in real-time.
                            • heka - universal tool for data processing from Mozilla. Large collection of built-in plugins. Extendable via Go and Lua plugin API.
                            • Juju - Cloud-agnostic service deployment and orchestration - supports EC2, Azure, Openstack, MAAS and more.
                            • nsq - A realtime distributed messaging platform
                            • peg - Peg, Parsing Expression Grammar, is an implementation of a Packrat parser generator.
                            • Postman - Command-line utility for batch-sending email.
                            • syncthing - An open, decentralized file synchronization tool and protocol.
                            • Tenyks - Service oriented IRC bot using Redis and JSON for messaging.
                            • tsuru - An extensible and open source Platform as a Service software.

                            Resources

                            Where to discover new Go libraries.

                            Benchmarks

                            Conferences

                            E-Books

                            推ter

                            Websites

                            Windows

                            • go-ole - Win32 OLE implementation for golang

                            Tutorials

                            项目主页:http://www.open-open.com/lib/view/home/1412990532561