Go语言框架、开发库和软件及资源大全

jopen 10年前

一组非常棒的Go语言框架、开发库和软件及资源大全。

  • Awesome Go
    • Web Frameworks </li>
    • Template Engine
    • Forms
    • Authentication and OAuth
    • Database
    • Database Drivers
    • Email
    • Messaging
    • ORM
    • Imagery
    • Text Processing
    • Natural Language Processing
    • Science and Data Analysis
    • Machine Learning
    • Testing
    • Audio
    • Video
    • Game Development
    • GUI
    • OpenGL
    • Editor Plugins
    • DevOps Tools
    • Utilities
    • Logging
    • Code Analysis and Linter
    • Code generation & ‘generics’
    • </ul> </li>
    • Resources
      • Websites
      • (e)Books
      • </ul> </li> </ul>

        Web Frameworks

        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.
        • tigertonic - A Go framework for building JSON web services inspired by Dropwizard

        Middlewares

        • negroni - Idiomatic HTTP Middleware for Golang
        • alice - Painless middleware chaining for Go
        • muxchain - Lightweight middleware for net/http

        Template Engine

        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
        • amber - Amber is an elegant templating engine for Go Programming Language It is inspired from HAML and Jade.

        Forms

        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 推ter.
        • httpauth - HTTP Authentication middlewares.
        • osin - Golang OAuth2 server library.
        • jwt-go - Golang implementation of JSON Web Tokens (JWT).

        Database

        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.

        Database Drivers

        Libraties for connecting and operating databases.

        • Relational Databases
          • pq - Pure Go Postgres driver for 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.
          • go-db - Generic database API for Go.
          </li>
        • 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.
          • </ul> </li> </ul>

            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.
            • mp - A simple cli email parser. It currently takes stdin and outputs JSON.

            Messaging

            Libraries that implement messaging systems

            • Uniqush-Push - A redis backed unified push service for server-side notifications to mobile devices

            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.
            • 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.

            Imagery

            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.
            • go-webcolors - Port of webcolors library from Python to Go.

            Text Processing

            • 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 </li>
              • bluemonday - HTML Sanitizer
              • </ul> </li> </ul>

                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 Snowball native.
                • 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.
                • 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
                • 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.

                Machine Learning

                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

                Testing

                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
                • Testify - A sacred extension to the standard go testing package.

                Audio

                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.

                Video

                Libraries for manipulating video.

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

                Game Development

                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.

                Editor Plugins

                Awesome plugins for editors.

                • vim-go - Go development plugin for Vim.
                • GoSublime - A Golang plugin collection for the text editor SublimeText 2 providing code completion and other IDE-like features.

                GUI

                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
                • gotk3 - Go bindings for GTK3.

                OpenGL

                Libraries for using OpenGL in Go.

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

                DevOps Tools

                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.

                Utilities

                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.
                • godbg - Web-based gdb front-end application
                • Boom - Boom is a tiny program that sends some load to a web application.
                • 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.

                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.

                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.

                Resources

                Where to discover new Go libraries.

                Websites

                Tutorials

                推ter

                (e)Books