A great systems-oriented programming language I’ve taken up to complement Python due to its ability to cross-compile and produce (mostly) self-contained static binaries.
Tricks
Shrinking executables via gccgo
and upx
:
go build -mod=vendor -gccgoflags '-Os -s' -o main && upx --best --lzma main
Resources
Category | Date | Link | Notes |
---|---|---|---|
AI | 2023 | agency | an LLM library for Go |
Authentication | 2020 | authelia | authentication and authorization server providing 2-factor authentication and single sign-on |
tobab | an identity-aware proxy |
||
Ory | a full IAP authentication solution with OpenID integration |
||
loginsrv | a standalone minimalistic login server providing a JWT login for multiple login backends |
||
2018 | traefik-forward-auth | a forward auth service that provides OAuth support for the Traefik reverse proxy |
|
Big Data | gohadoop | A set of libraries to build Hadoop jobs |
|
2015 | Glow | An easy-to-use distributed computation (map-reduce) system in pure Go. |
|
Configuration | 2018 | envconfig | simple, no-frills environment variable handling |
2017-01 | viper | A flexible configuration solution for 12 factor apps (and more) |
|
Data Science | 2018 | go-freeling | Natural language processing |
gonum/floats | operations on slices of floats |
||
gonum/graph | Graph navigation/traversal |
||
gonum/matrix | Matrix algebra |
||
gonum/optimize | Gradient descent and minimization |
||
gonum/plot | Plotting and visualization |
||
gonum/stat | statistics package |
||
gophernotes | A Jupyter kernel for Go |
||
gota | DataFrames, Series and data manipulation |
||
regression | Multivariable regression |
||
csvutil | CSV and tabular data |
||
Data Structures | 2016 | gen | Clojure-like immutable data-structures and functional helpers |
Database | 2022 | sqlite | a Go interface to sqlite3 |
go-sqlite3-stdlib | a set of math and statistics extensions to |
||
2021 | nakama | A game-oriented state server, backed by CockroachDB |
|
2020 | dbmate | a database migration tool that supports MySQL, PostgreSQL, SQLite and ClickHouse |
|
2016 | gorm | A Go ORM library |
|
Deep Learning | 2018 | go-neural | |
gonn | |||
neurgo | |||
Desktop | 2022 | wails | an Electron-like framework for desktop app development |
Frameworks | 2024 | htmgo | a lightweight framework for building interactive web applications using Go and htmx without JavaScript |
GUI | gio | a cross-platform GUI library for Go |
|
spot | a React-like destkop GUI toolkit for Go that supports FLTK and Cocoa |
||
2023 | fyne | a cross platform GUI toolkit that can be used in Android and iOS |
|
2022 | tinygui | a GUI toolkit for TinyGo |
|
Graphics | sdfx | a CAD package written in Go |
|
2016 | gift | The Go Image Filtering Toolkiti |
|
HomeKit | 2022 | hap | a rewrite of the |
IoT | 2020 | tamago | compile and execute Go on bare ARM SoCs |
2018 | gokrazy | a pure-Go userland for Raspberry Pi 3 appliances |
|
tinygo | an |
||
Libraries | 2024 | rill | a toolkit for clean, composable, channel-based concurrency |
darwinkit | a library for building Darwin (macOS) apps |
||
lo | a lodash-style library for generics, map, filter, contains, find, etc. |
||
go-funk | a library with map, reduce and other functional primitives |
||
2023 | ergo | an impressive Erlang-compatible library for implementing OTP design patterns |
|
sdf | signed distance function shape generation |
||
oidc | OpenID Connect client and server library |
||
2022 | maphash | Hash any comparable type using Golang’s fast runtime hash. |
|
imagemeta | supports EXIF, XMP and HEIC metadata parsing |
||
natiu-mqtt | a self-contained MQTT implementation |
||
2020 | Chroma | a fast generic syntax highlighter |
|
olric | A distributed cache and in-memory key/value data store that can be used standalone or embedded. |
||
2019 | bild | a collection of parallel image processing algorithms |
|
2018 | go-imap | an IMAP client library |
|
goworker | A Resque-compatible library for background workers |
||
go-dsp | A digital processing package |
||
ffjson | Faster JSON for Go |
||
gjson | Fast JSON data retrieval |
||
scrape | A simple interface for Go web scraping |
||
2016 | go-linq | LINQ-like functionality with coroutine support |
|
libchan | A network-enabled abstraction that mimics channels |
||
Machine Learning | 2018 | goml | stream oriented ML library |
word2vec | word2vec model support |
||
golearn | A very nice machine learning library |
||
Messaging | 2024 | SmoothMQ | is a drop-in replacement for AWS SQS |
2018 | nsq | A message queueing system |
|
Microservices | 2020 | flogo | a low-code environment with streaming support and a Node-RED like approach. |
flatend | an interesting take on deployment and discovery via P2P/Kademlia |
||
2019 | go-micro | a microservices framework with pluggable components for discovery, transports, etc. |
|
Middleware | 2017-11 | casbin | a flexible access control library |
Networking | 2023 | blocky | DNS proxy/ad-blocker for local network (can run inside of gokrazy) |
2018 | router7 | A router based on gokrazy |
|
Other | 2021 | macdriver | Objective-C bindings for Go |
2018 | Shrinking Go binaries | By stripping debug symbols and using |
|
go-bindata | Pack external assets into a Go program as binary data |
||
Parsers | 2016-06 | etree | An XML handling library modeled on Python’s |
Protocols | 2016 | go-vnc | An extensible VNC protocol library |
2015-03 | torrent | An embeddable BitTorrent library |
|
2015-01 | mangos | A network library for IPC patterns |
|
Robotics | 2014 | Gobot | A set of robotics-oriented libraries |
Search | 2016 | blevesearch | A Lucene-like indexing library |
Servers | 2023 | mox | modern full-featured (SMTP, IMAP, DKIM, etc.) mail server |
2020 | maddy | a composable, all-in-one SMTP/IMAP server |
|
System | 2018 | suture | A library that implements Erlang-like supervision trees |
Tools | 2024 | bruin | a data pipeline tool that integrates data ingestion, transformation, and quality checks. |
gozer | A simple static site generator |
||
monogon | a Linux userland in pure Go |
||
nano-web | Hyper-minimal webserver for serving SPAs and static content |
||
zoraxy | A general purpose HTTP reverse proxy and forwarding tool |
||
2023 | glow | a CLI Markdown renderer in te spirit of more/less |
|
gojekyll | A partial reimplementation of Jekyll in Go |
||
2022 | vhs | terminal demo recorder with GIF/ |
|
goweight | a CLI tool to identify which libraries contribute most to binary size |
||
2021 | till | a web scraping caching proxy that handles most of the anti-scraping mechanics |
|
zinc | a lightweight alternative to elasticsearch that claims to run in less than 100 MB of RAM and has a broadly similar API |
||
pyroscope | a profiling platform with support for Go, Python and Ruby |
||
2020 | Got | a tool/library that uses concurrent HTTP range requests for faster downloads |
|
Transpilers | 2014 | Tardis Go | A transpiler to JavaScript |
funcgo | A simplified dialect that compiles to Clojure |
||
GopherJS | A transpiler to JavaScript |
||
UI | 2019 | muon | a lightweight alternative to Electron with go bindings |
2018 | termui | A terminal-oriented dashboard library |
|
2014 | ui | A platform-native GUI library |
|
Video | 2024 | go2rtc | a camera proxy that can surface RTSP cameras to HomeKit (and much more) |
broadcast-box | a tool for broadcasting video streams to multiple platforms using WebRTC |
||
Web | 2022 | but | a full-stack web framework with server-side rendering and good JS integration |
2020 | gearbox | A web framework built around |
|
2018 | Beego | Ships with an ORM and built-in monitoring |
|
QOR | A set of libraries for E-Commerce and CMS |
||
Gin | uses a Radix tree for routing, handles panics |
||
Gobuffalo | |||
Iris | Lots of features and plugins |
||
2017-07 | HttpRouter | A high performance HTTP router |
|
Goji | A Sinatra-inspired, minimalist framework |
||
2016-06 | echo | A high-performance HTTP server framework with LetsEncrypt support |
|
Web Frameworks | 2024 | sandwich | a middleware & routing framework |
pocketbase | a web app realtime backend with SQLite, user and file management, and a dashboard UI. |
||
Writing | 2023 | vale | an extensible linter for prose |