Frameworks#
Go’s standard library is unusually capable, so frameworks tend to be thin. The community generally prefers small, composable packages over monolithic frameworks.
HTTP / Web#
The standard net/http is good enough for production. Common upgrades
add routing, middleware, and validation.
RPC / Service#
grpc-go , official gRPC.
connect-go , gRPC-compatible plus HTTP/JSON.
Twirp , simpler RPC over HTTP/Protobuf.
go-kit , toolkit for microservices.
Kratos , microservice framework.
ORM / Data Access#
database/sql, standard library; the foundation everything builds on.pgx , Postgres driver and toolkit; the de-facto choice.
sqlc , generates type-safe Go from SQL queries.
sqlx , thin extensions to
database/sql.ent , Facebook’s entity framework with codegen.
gorm , traditional ORM.
bun , modern, query-first.
goqu , SQL builder.
CLI#
cobra , the most-used CLI framework (used by kubectl, docker, hugo).
urfave/cli , alternative.
kong , struct-tag-driven.
cli-go (charm), Bubble Tea for TUIs.
Configuration#
viper , many sources (env, files, flags, remote).
koanf , simpler alternative to viper.
envconfig / caarlos0/env, env vars to structs.
Background Work / Queues#
Testing#
Observability#
OpenTelemetry-go, the standard.
slog , structured logging in stdlib (Go 1.21+).
prometheus/client_golang, metrics.
WebAssembly / Edge#
wasmtime-go, wazero, WASM runtimes embeddable in Go.
Why “Boring” Wins in Go#
The Go culture is suspicious of magic and frameworks. The most-used
“framework” in production is net/http + a router + database/sql + a
logger. That stack is hard to beat for clarity and longevity.