Go Library
4.11K subscribers
20 photos
63 files
798 links
Go (Golang) Library

Реклама: @ostinostin
Контент: @mxssl
Download Telegram
revive

Fast, configurable, extensible, flexible, and beautiful linter for Go. Drop-in replacement of golint. Revive provides a framework for development of custom rules, and lets you define a strict preset for enhancing your development & code review processes.


https://github.com/mgechev/revive
Faster shuffling in Go with batching

Random integer generation is a fundamental operation in programming, often used in tasks like shuffling arrays. Go’s standard library provides convenient tools like rand.Shuffle for such purposes. You may be able to beat the standard library by a generous margin. Let us see why.


https://lemire.me/blog/2025/04/06/faster-shuffling-in-go-with-batching
More predictable benchmarking with testing.B.Loop

https://go.dev/blog/testing-b-loop
Go write a web app! Five interesting Go web frameworks

https://www.honeybadger.io/blog/golang-frameworks
Go’s best-kept secret: executable examples

https://bitfieldconsulting.com/posts/examples
github-mcp-server

The GitHub MCP Server is a Model Context Protocol (MCP) server that provides seamless integration with GitHub APIs, enabling advanced automation and interaction capabilities for developers and tools.


https://github.com/github/github-mcp-server
genanki-go

A Go library for generating Anki decks programmatically.


https://github.com/npcnixel/genanki-go
go-ansible

Go-ansible is a Go package that allows executing Ansible commands, such as ansible-playbook, ansible-inventory, or ansible, directly from Golang applications. It offers a variety of options for each command, facilitating seamless integration of Ansible functionality into your projects. It is important to highlight that go-ansible is not an alternative implementation of Ansible, but rather a wrapper around the Ansible commands. Let's dive in and explore the capabilities of go-ansible together.


https://github.com/apenella/go-ansible
outpost

Outpost is a self-hosted and open-source infrastructure that enables event producers to add outbound webhooks and Event Destinations to their platform with support for destination types such as Webhooks, Hookdeck Event Gateway, Amazon EventBridge, AWS SQS, AWS SNS, GCP Pub/Sub, RabbitMQ, and Kafka.


https://github.com/hookdeck/outpost
listmonk

listmonk is a standalone, self-hosted, newsletter and mailing list manager. It is fast, feature-rich, and packed into a single binary. It uses a PostgreSQL database as its data store.


https://github.com/knadh/listmonk
Graceful Shutdown in Go: Practical Patterns

Graceful shutdown in any application generally satisfies three minimum conditions:

1. Close the entry point by stopping new requests or messages from sources like HTTP, pub/sub systems, etc. However, keep outgoing connections to third-party services like databases or caches active.
2. Wait for all ongoing requests to finish. If a request takes too long, respond with a graceful error.
3. Release critical resources such as database connections, file locks, or network listeners. Do any final cleanup.

This article focuses on HTTP servers and containerized applications, but the core ideas apply to all types of applications.


https://victoriametrics.com/blog/go-graceful-shutdown/index.html
Organize your Go middleware without dependencies

For many years, I've used third-party packages to help organize and manage middleware in my Go web applications. In small projects, I often used alice to create middleware 'chains' that I could reuse across multiple routes. And for larger applications, with lots of middleware and routes, I typically used a router like chi or flow to create nested route 'groups' with per-group middleware.

But since Go 1.22 introduced the new pattern matching functionality for http.ServeMux, where possible I've tried to drop third-party dependencies from my routing logic and shift to using just the standard library.

But going all-in on the standard library leaves a good question: how should we organize and manage middleware without using any third-party packages?


https://www.alexedwards.net/blog/organize-your-go-middleware-without-dependencies
Bloom filters

The original motivation for the creation of Bloom filters is efficient set membership, using a probabilistic approach to significantly reduce the time and space required to reject items that are not members in a certain set.

The data structure was proposed by Burton Bloom in a 1970 paper titled "Space/Time Trade-offs in Hash Coding with Allowable Errors". It's a good paper that's worth reading.


https://eli.thegreenplace.net/2025/bloom-filters
Tutorial: Find and fix vulnerable dependencies with govulncheck

https://go.dev/doc/tutorial/govulncheck
Go doesn’t believe in frameworks, but teams still need them

Go is a powerful language known for its simplicity, speed, and concurrency model. But the Go community also traditionally takes a strong stance against frameworks and centralized conventions — and that’s where many teams, especially those coming from structured environments like Rails, Django, or FastAPI, hit a wall.

This post explores the structural gap in Go development, why it exists, and how Encore is helping fill that void with a convention-driven framework that brings clarity, consistency, and productivity back to backend development.


https://encore.dev/blog/go-frameworks
Odin, A Pragmatic C Alternative with a Go Flavour

Odin is a general-purpose systems programming language authored by Bill “gingerBill” Hall. Designed as a modern alternative to C, Odin emphasizes simplicity, performance, and readability without sacrificing control over low-level details.

The website says it’s “data-oriented”, and features such as SOA (structs-of-arrays) and implicit zero initialization tie into that. Despite this focus, the language surprisingly has dynamic maps and arrays built into the language itself. While the memory is still manually managed, it’s uncommon to see such built-ins.

This perhaps sets the tone of Odin: it tries to be ergonomic and easy to write by offering a lot out of the box. Odin also comes with “vendor”, containing bindings to a wide variety of popular libraries. This makes the language very easy to get into.


https://bitshifters.cc/2025/05/04/odin.html
nativewebp

This is a native WebP encoder written entirely in Go, with no dependencies on libwebp or other external libraries. Designed for performance and efficiency, this encoder generates smaller files than the standard Go PNG encoder and is approximately 50% faster in execution.

Currently, the encoder supports only WebP lossless images (VP8L).


https://github.com/HugoSmits86/nativewebp