Skip to content
gohacks.dev

Topics

Check out the topics that interest you.

Basics

Types, slices, maps, structs and interfaces, and the small decisions that make Go code read like Go instead of Java with different braces.

Concurrency

Goroutines are cheap to start and expensive to get wrong. Channels, mutexes, context and the leaks and deadlocks waiting for anyone who skips the details.

Web

Servers, handlers, middleware, templates, cookies and sessions on net/http, plus the parts of a real website the tutorials leave out.

APIs

Designing JSON, REST and gRPC interfaces that other people have to live with: versioning, pagination, validation, errors and clients.

Testing

Table-driven tests, fakes over mocks, fuzzing, benchmarks and the habits that make a suite worth running on every save.

Databases

Talking to Postgres, MySQL, SQLite, Redis and friends without leaking connections, hand-building queries or fighting your migrations.

Performance

Profile first, then change something. pprof, allocations, the garbage collector, escape analysis and benchmarks that hold up in production.

Generics

Type parameters, constraints and iterators, and the honest answer to whether this particular function needed them at all.

DevOps

Getting a Go binary out the door and keeping it alive: containers, cross-compiling, CI pipelines, systemd, releases and rollbacks.

Security

Input you should not trust, crypto you should not roll yourself, TLS, secrets, dependency scanning and how Go code actually gets exploited.

Standard Library

The batteries that ship with Go. Check here before you add a dependency, because the answer is often already in the box.

Tooling

The go command, vet, linters, formatters, code generation, editors and the Git habits that keep a repository tidy.

Modules

go.mod, versions, replace directives, workspaces and private repos, plus what to do when a dependency goes sideways.

Networking

Sockets below HTTP: TCP and UDP servers, TLS, DNS, timeouts, proxies, WebSockets and protocols you write yourself.

Architecture

Project layout, package boundaries, dependency injection and when to split a service. Opinions, with the cost of each one stated.

Data Processing

Parsing, transforming and streaming text, CSV, JSON, logs and binary files, and pushing a lot of it through a small amount of memory.

Embedded

Go on a Raspberry Pi, a microcontroller or a router: GPIO, sensors, tiny binaries and what to do when there is no operating system.

Desktop

Windows, menus and system trays in Go, from native toolkits to a web view in a box, and how to package the result for real users.

Gin

The most downloaded Go web framework. Routing, binding, middleware and how to keep a Gin app from becoming one giant main package.

Chi

A small router that stays out of net/http's way. Composable middleware, sub-routers and why many teams stop looking after it.

Echo

A tidy, batteries-included framework with strong binding and middleware. What it adds over the standard mux, and what it costs.

Fiber

Express-style Go built on fasthttp. Fast, familiar to Node developers, and different from net/http in ways that bite.

Gorilla

Mux, sessions, WebSocket and CSRF toolkits that a decade of Go services still run on. What to keep and what to replace.

Cobra

The library behind kubectl and the GitHub CLI. Commands, flags, completions, Viper config and a layout that survives growth.

Bubble Tea

Terminal UIs with the Elm architecture. Models, messages, Lip Gloss styling and components that do not flicker.

Fyne

Native-feeling desktop and mobile apps from one Go codebase. Widgets, layouts, themes and packaging for every platform.

Wails

Go on the backend, a web frontend in a native window. Bindings, events, builds and how it compares with Electron.

Kubernetes

Writing Go that talks to the cluster: client-go, controllers, operators, admission webhooks and the tests that keep them honest.