awesome-go-plus
A curated list of awesome Go frameworks, libraries and software
https://github.com/jayecc/awesome-go-plus
Last synced: 6 days ago
JSON representation
-
Data Structures and Algorithms
-
Text Analysis
- parsefields - Tools for parse JSON-like logs for collecting unique fields and events. 
- ptrie - An implementation of prefix tree. 
- trie - Trie implementation in Go. 
-
Trees
- merkle - Space-efficient computation of Merkle root hashes and inclusion proofs. 
- skiplist - Very fast Go Skiplist implementation. 
- skiplist - Skiplist implementation in Go. 
- treap - Persistent, fast ordered map using tree heaps. 
- treemap - Generic key-sorted map using a red-black tree under the hood. 
- hashsplit - Split byte streams into chunks, and arrange chunks into trees, with boundaries determined by content, not position.
-
-
Date and Time
-
Search and Analytic Databases
- approx - A Duration extension supporting parsing/printing durations in days, weeks and years. 
- carbon - A simple, semantic and developer-friendly time package for golang. 
- carbon - Simple Time extension with a lot of util methods, ported from PHP Carbon library. 
- cronrange - Parses Cron-style time range expressions, checks if the given time is within any ranges. 
- date - Augments Time for working with dates, date ranges, time spans, periods, and time-of-day. 
- dateparse - Parse date's without knowing format in advance. 
- durafmt - Time duration formatting library for Go. 
- feiertage - Set of functions to calculate public holidays in Germany, incl. specialization on the states of Germany (Bundesländer). Things like Easter, Pentecost, Thanksgiving... 
- go-anytime - Parse dates/times like "next dec 22nd at 3pm" and ranges like "from today until next thursday" without knowing the format in advance. 
- go-datebin - A simple datetime parse pkg. 
- go-persian-calendar - The implementation of the Persian (Solar Hijri) Calendar in Go (golang). 
- go-str2duration - Convert string to duration. Support time.Duration returned string and more. 
- go-sunrise - Calculate the sunrise and sunset times for a given location. 
- go-week - An efficient package to work with ISO8601 week dates. 
- gostradamus - A Go package for working with dates. 
- iso8601 - Efficiently parse ISO8601 date-times without regex. 
- kair - Date and Time - Golang Formatting Library. 
- now - Now is a time toolkit for golang. 
- strftime - C99-compatible strftime formatter. 
- timespan - For interacting with intervals of time, defined as a start time and a duration. 
- timeutil - Useful extensions (Timedelta, Strftime, ...) to the golang's time package. 
- tuesday - Ruby-compatible Strftime function. 
-
-
Distributed Systems
-
Search and Analytic Databases
- arpc - More effective network communication, support two-way-calling, notify, broadcast. 
- bedrock - Provides a minimal, modular and composable foundation for quickly developing services and more use case specific frameworks in Go. 
- capillaries - distributed batch data processing framework. 
- celeriac - Library for adding support for interacting and monitoring Celery workers, tasks and events in Go. 
- committer - A distributed transactions management system (2PC/3PC implementation). 
- consistent - Consistent hashing with bounded loads. 
- consistenthash - Consistent hashing with configurable replicas. 
- dht - BitTorrent Kademlia DHT implementation. 
- digota - grpc ecommerce microservice. 
- doublejump - A revamped Google's jump consistent hash. 
- dragonboat - A feature complete and high performance multi-group Raft library in Go. 
- Dragonfly - Provide efficient, stable and secure file distribution and image acceleration based on p2p technology to be the best practice and standard solution in cloud native architectures. 
- drmaa - Job submission library for cluster schedulers based on the DRMAA standard. 
- dynamolock - DynamoDB-backed distributed locking implementation.
- dynatomic - A library for using DynamoDB as an atomic counter. 
- emitter-io - High performance, distributed, secure and low latency publish-subscribe platform built with MQTT, Websockets and love. 
- evans - Evans: more expressive universal gRPC client. 
- failured - adaptive accrual failure detector for distributed systems. 
- flowgraph - flow-based programming package. 
- gleam - Fast and scalable distributed map/reduce system written in pure Go and Luajit, combining Go's high concurrency with Luajit's high performance, runs standalone or distributed. 
- glow - Easy-to-Use scalable distributed big data processing, Map-Reduce, DAG execution, all in pure Go. 
- gmsec - A Go distributed systems development framework. 
- go-doudou - A gossip protocol and OpenAPI 3.0 spec based decentralized microservice framework. Built-in go-doudou cli focusing on low-code and rapid dev can power up your productivity. 
- go-eagle - A Go framework for the API or Microservice with handy scaffolding tools. 
- go-health - Library for enabling asynchronous dependency health checks in your service. 
- go-jump - Port of Google's "Jump" Consistent Hash function. 
- go-kit - Microservice toolkit with support for service discovery, load balancing, pluggable transports, request tracking, etc. 
- go-micro - A distributed systems development framework. 
- go-mysql-lock - MySQL based distributed lock. 
- go-pdu - A decentralized identity-based social network. 
- go-sundheit - A library built to provide support for defining async service health checks for golang services. 
- gorpc - Simple, fast and scalable RPC library for high load. 
- grpc-go - The Go language implementation of gRPC. HTTP/2 based RPC. 
- hprose - Very newbility RPC Library, support 25+ languages now. 
- jsonrpc - The jsonrpc package helps implement of JSON-RPC 2.0. 
- jsonrpc - JSON-RPC 2.0 HTTP client implementation. 
- K8gb - A cloud native Kubernetes Global Balancer. 
- Kitex - A high-performance and strong-extensibility Golang RPC framework that helps developers build microservices. If the performance and extensibility are the main concerns when you develop microservices, Kitex can be a good choice. 
- Kratos - A modular-designed and easy-to-use microservices framework in Go. 
- liftbridge - Lightweight, fault-tolerant message streams for NATS. 
- lura - Ultra performant API Gateway framework with middlewares. 
- NATS - NATS is a simple, secure, and 
- outboxer - Outboxer is a go library that implements the outbox pattern. 
- pglock - PostgreSQL-backed distributed locking implementation.
- pjrpc - Golang JSON-RPC Server-Client with Protobuf spec.
- raft - Golang implementation of the Raft consensus protocol, by HashiCorp. 
- raft - Go implementation of the Raft consensus protocol, by CoreOS. 
- rain - BitTorrent client and library. 
- redis-lock - Simplified distributed locking implementation using Redis. 
- resgate - Realtime API Gateway for building REST, real time, and RPC APIs, where all clients are synchronized seamlessly.
- ringpop-go - Scalable, fault-tolerant application-layer sharding for Go applications. 
- rpcx - Distributed pluggable RPC service framework like alibaba Dubbo. 
- Semaphore - A straightforward (micro) service orchestrator. 
- sleuth - Library for master-less p2p auto-discovery and RPC between HTTP services (using [ZeroMQ](https://github.com/zeromq/libzmq)). 
- Tarmac - Framework for writing functions, microservices, or monoliths with WebAssembly 
- Temporal - Durable execution system for making code fault-tolerant and simple. 
- torrent - BitTorrent client package. 
- trpc-go - The Go language implementation of tRPC, which is a pluggable, high-performance RPC framework. 
- dot - distributed sync using operational transformation/OT. 
- go-zero - A web and rpc framework. It's born to ensure the stability of the busy sites with resilient design. Builtin goctl greatly improves the development productivity. 
- sponge - A distributed development framework that integrates automatic code generation, gin and grpc frameworks, base development frameworks. 
- micro - A distributed systems runtime for the cloud and beyond. 
-
-
Dynamic DNS
-
Search and Analytic Databases
- DDNS - Personal DDNS client with Digital Ocean Networking DNS as backend. 
- dyndns - Background Go process to regularly and automatically check your IP Address and make updates to (one or many) Dynamic DNS records for Google domains whenever your address changes.
- GoDNS - A dynamic DNS client tool, supports DNSPod & HE.net, written in Go. 
-
-
E-Books
-
E-books for purchase
- Black Hat Go - Go programming for hackers and pentesters.
- Continuous Delivery in Go - This practical guide to continuous delivery shows you how to rapidly establish an automated pipeline that will improve your testing, code quality, and final product.
- Go in Practice, Second Edition - Your practical guide on the ins-and-outs of Go development, covering the standard library and the most important tools from Go’s powerful ecosystem.
- Know Go: Generics - A guide to understanding and using generics in Go.
- The Power of Go: Tests - A guide to testing in Go.
- The Power of Go: Tools - A guide to writing command-line tools in Go.
- Creative DIY Microcontroller Project With TinyGo and WebAssembly - An introduction into the TinyGo compiler with projects involving Arduino and WebAssembly.
- For the Love of Go - An introductory book for Go beginners.
-
Free e-books
- A Go Developer's Notebook
- An Introduction to Programming in Go
- Build a blockchain from scratch in Go with gRPC - The foundational and practical guide for effectively learning and progressively building a blockchain from scratch in Go with gRPC. 
- Build Web Application with Golang
- Building Web Apps With Go
- Go AST Book (Chinese) - A book focusing on Go `go/*` packages. 
- Go Faster - This book seeks to shorten your learning curve and help you become a proficient Go programmer, faster.
- Go Succinctly - in Persian. 
- Go with the domain - A book showing how to apply DDD, Clean Architecture, and CQRS by practical refactoring.
- GoBooks - A curated list of Go books. 
- How To Code in Go eBook - A 600 page introduction to Go aimed at first time developers.
- Network Programming With Go
- Practical Go Lessons
- Spaceship Go A Journey to the Standard Library
- The Go Programming Language
- The Golang Standard Library by Example (Chinese) - 9513-blue)
- Web Application with Go the Anti-Textbook - 3201-blue)
-
-
Editor Plugins
-
Routers
- coc-go language server extension for Vim/Neovim - This plugin adds [gopls](https://github.com/golang/tools/blob/master/gopls/README.md) features to Vim/Neovim. 
- Go Doc - A Visual Studio Code extension for showing definition in output and generating go doc. 
- Go plugin for JetBrains IDEs - Go plugin for JetBrains IDEs.
- go-mode - Go mode for GNU/Emacs. 
- gocode - Autocompletion daemon for the Go programming language. 
- goimports-reviser - Formatting tool for imports. 
- goprofiling - This extension adds benchmark profiling support for the Go language to VS Code.
- GoSublime - Golang plugin collection for the text editor SublimeText 3 providing code completion and other IDE-like features. 
- gounit-vim - Vim plugin for generating Go tests based on the function's or method's signature. 
- vim-compiler-go - Vim plugin to highlight syntax errors on save. 
- vim-go - Go development plugin for Vim. 
- vscode-go - Extension for Visual Studio Code (VS Code) which provides support for the Go language. 
- Watch - Runs a command in an acme win on file changes. 
-
-
Email
-
Search and Analytic Databases
- douceur - CSS inliner for your HTML emails. 
- email - A robust and flexible email library for Go. 
- email-verifier - A Go library for email verification without sending any emails. 
- go-dkim - DKIM library, to sign & verify email. 
- go-email-normalizer - Golang library for providing a canonical representation of email address. 
- go-email-validator - Modular email validator for syntax, disposable, smtp, etc... checking. 
- go-imap - IMAP library for clients and servers. 
- go-mail - A simple Go library for sending mails in Go. 
- go-message - Streaming library for the Internet Message Format and mail messages. 
- go-premailer - Inline styling for HTML mail in Go. 
- go-simple-mail - Very simple package to send emails with SMTP Keep Alive and two timeouts: Connect and Send. 
- Hectane - Lightweight SMTP client providing an HTTP API. 
- hermes - Golang package that generates clean, responsive HTML e-mails. 
- Maddy - All-in-one (SMTP, IMAP, DKIM, DMARC, MTA-STS, DANE) email server 
- mailchain - Send encrypted emails to blockchain addresses written in Go. 
- mailgun-go - Go library for sending mail with the Mailgun API. 
- MailHog - Email and SMTP testing with web and API interface. 
- Mailpit - Email and SMTP testing tool for developers. 
- mailx - Mailx is a library that makes it easier to send email via SMTP. It is an enhancement of the golang standard library `net/smtp`. 
- mox - Modern full-featured secure mail server for low-maintenance, self-hosted email. 
- SendGrid - SendGrid's Go library for sending email. 
- smtp - SMTP server protocol state machine. 
- smtpmock - Lightweight configurable multithreaded fake SMTP server. Mimic any SMTP behaviour for your test environment. 
- truemail-go - Configurable Golang email validator/verifier. Verify email via Regex, DNS, SMTP and even more. 
-
-
Embeddable Scripting Languages
-
Search and Analytic Databases
- anko - Scriptable interpreter written in Go. 
- binder - Go to Lua binding library, based on [gopher-lua](https://github.com/yuin/gopher-lua). 
- cel-go - Fast, portable, non-Turing complete expression evaluation with gradual typing. 
- ecal - A simple embeddable scripting language which supports concurrent event processing. 
- gentee - Embeddable scripting programming language. 
- gisp - Simple LISP in Go. 
- go-duktape - Duktape JavaScript engine bindings for Go. 
- go-lua - Port of the Lua 5.2 VM to pure Go. 
- go-php - PHP bindings for Go. 
- go-python - naive go bindings to the CPython C-API. 
- goal - An embeddable scripting array language.
- goja - ECMAScript 5.1(+) implementation in Go. 
- golua - Go bindings for Lua C API. 
- gopher-lua - Lua 5.1 VM and compiler written in Go. 
- gval - A highly customizable expression language written in Go. 
- metacall - Cross-platform Polyglot Runtime which supports NodeJS, JavaScript, TypeScript, Python, Ruby, C#, WebAssembly, Java, Cobol and more. 
- ngaro - Embeddable Ngaro VM implementation enabling scripting in Retro. 
- prolog - Embeddable Prolog. 
- purl - Perl 5.18.2 embedded in Go. 
- starlark-go - Go implementation of Starlark: Python-like language with deterministic evaluation and hermetic execution. 
- starlet - Go wrapper for [starlark-go](https://github.com/google/starlark-go) that simplifies script execution, offers data conversion, and useful Starlark libraries and extensions. 
- tengo - Bytecode compiled script language for Go. 
- Wa/凹语言 - The Wa Programming Language embedded in Go. 
- expr - Expression evaluation engine for Go: fast, non-Turing complete, dynamic typing, static typing. 
-
-
Error Handling
-
Search and Analytic Databases
- emperror - Error handling tools and best practices for Go libraries and applications. 
- eris - A better way to handle, trace, and log errors in Go. Compatible with the standard error library and github.com/pkg/errors. 
- errlog - Hackable package that determines responsible source code for an error (and some other fast-debugging features). Pluggable to any logger in-place. 
- errors - Drop-in replacement for the standard library errors package and github.com/pkg/errors. Provides various error handling primitives. 
- errors - Simple golang error handling with classification primitives. 
- errors - The most simple error wrapper with awesome performance and minimal memory overhead. 
- errors - Providing errors with a stack trace and optional structured details. Compatible with github.com/pkg/errors API but does not use it internally.
- errors - Drop-in replacement for builtin Go errors. This is a minimal error handling package with custom error types, user friendly messages, Unwrap & Is. With very easy to use and straightforward helper functions. 
- errors - Go error library with error portability over the network. 
- errorx - A feature rich error package with stack traces, composition of errors and more. 
- exception - A simple utility package for exception handling with try-catch in Golang. 
- Fault - An ergonomic mechanism for wrapping errors in order to facilitate structured metadata and context for error values. 
- go-multierror - Go (golang) package for representing a list of errors as a single error. 
- multierr - Package for representing a list of errors as a single error. 
- oops - Error handling with context, stack trace and source fragments. 
- tracerr - Golang errors with stack trace and source fragments. 
- Falcon - A Simple Yet Highly Powerful Package For Error Handling. 
-
-
File Handling
-
Search and Analytic Databases
- afero - FileSystem Abstraction System for Go. 
-
Programming Languages
Categories
Utilities
174
Software Packages
155
Database
135
Miscellaneous
107
Third-party APIs
102
Networking
97
Testing
91
Command Line
90
Web Frameworks
87
Data Structures and Algorithms
74
Text Processing
70
Websites
69
Logging
63
Distributed Systems
62
Database Drivers
62
Configuration
61
Messaging
56
Goroutines
49
Natural Language Processing
48
Images
44
Meetups
43
Security
43
Machine Learning
40
JSON
39
Science and Data Analysis
36
Authentication and OAuth
35
Code Analysis
32
Server Applications
31
Bot Building
27
GUI
26
Financial
26
E-Books
25
ORM
25
File Handling
25
Email
24
Embeddable Scripting Languages
24
Date and Time
22
Game Development
22
Serialization
21
Go Tools
20
Error Handling
17
Query Language
17
Template Engines
17
Continuous Integration
16
Geographic
16
IoT (Internet of Things)
15
Benchmarks
15
Validation
15
Conferences
14
Job Scheduler
14
Build Automation
14
Generators
13
Editor Plugins
13
Package Management
13
Forms
12
Video
12
UUID
12
Gophers
11
Go Generate Tools
11
Blockchain
10
Functional
9
Audio and Music
9
Reflection
8
Hardware
8
Microsoft Office
8
Version Control
8
Style Guides
8
WebAssembly
7
Performance
7
XML
6
Go Compilers
6
OpenGL
6
Artificial Intelligence
6
Social Media
5
Zero Trust
5
Workflow Frameworks
5
Stream Processing
5
Actor Model
4
Resource Embedding
4
Windows
3
Data Integration Frameworks
3
Webhooks Server
3
Dynamic DNS
3
CSS Preprocessors
2
Sub Categories
Search and Analytic Databases
645
Utility/Miscellaneous
365
HTTP Clients
254
Routers
132
Standard CLI
132
Other Software
94
DevOps Tools
90
Transliteration
80
Free e-books
79
Testing Frameworks
63
Uncategorized
58
Databases Implemented in Go
40
Advanced Console UIs
40
Tutorials
39
Caches
30
Reddit
28
NoSQL Database Drivers
28
Parsers/Encoders/Decoders
26
SQL Query Builders
25
Middlewares
25
Dependency Injection
23
Database Schema Migration
22
Relational Database Drivers
20
Mock
18
Database Tools
18
Project Layout
18
Miscellaneous Data Structures and Algorithms
17
Morphological Analyzers
17
Markup Languages
13
Tokenizers
10
Text Analysis
9
Translation
9
Strings
8
Scrapers
8
Bloom and Cuckoo Filters
8
E-books for purchase
8
Formatters
8
Bit-packing and Compression
6
Microsoft Excel
6
Selenium and browser control tools
6
Queues
6
Trees
6
Regular Expressions
5
Interfaces to Multiple Backends
5
Language Detection
5
Maps
4
Twitter
4
Sets
4
Data Structure and Algorithm Collections
4
Fuzzing and delta-debugging/reducing/shrinking
3
Nullable Types
3
Guided Learning
3
Pipes
3
Slugifiers
3
Sanitation
2
Iterators
2
Bit Sets
2
Fail injection
1
RSS
1
Microsoft Word
1
Keywords
golang
1,175
go
1,045
golang-library
102
cli
91
database
78
json
73
http
61
testing
57
sql
52
docker
47
golang-package
46
framework
43
mysql
42
library
39
kubernetes
38
postgresql
38
middleware
32
redis
32
api
32
orm
30
logging
30
parser
30
configuration
29
cache
28
distributed-systems
28
concurrency
28
microservice
27
command-line
25
awesome-go
25
machine-learning
24
config
23
security
23
grpc
23
microservices
23
performance
23
log
22
sqlite
22
server
22
router
22
logger
21
validation
21
dependency-injection
21
cloud-native
21
terminal
20
devops
20
generics
20
rest-api
20
xml
20
linux
18
rest
18