The big one: everything at once, at production scale. The
webservice example assembles a realistic
microservice config — ~30 fields across nested sub-structs (server, database,
redis, logging, auth) — from a JSON base + env overrides + gos defaults, with
masked secrets and a focused resolution trace.
It’s the combination of every other feature page:
WithSources,go run ./examples/webservice
Output:
payments-api v1.8.3 starting in "production"
listen: 0.0.0.0:443 (TLS true)
database: app@prod-db.internal:5432/payments (pool 50, password set: 12 chars)
redis: redis.internal:6379 (pool 20)
logging: level=warn format=json sample=0.25
auth: issuer=https://auth.internal ttl=30m0s
── resolution trace (who won each field; secrets masked) ──
Configuring main.Config: 32 fields
[Primary Source] json (loaded 16 fields)
[Defaults] applied for 8 fields
Overrides & Secrets:
Environment string ⇐ env (override) = production
Version string ⇐ env (override) = 1.8.3
Port int ⇐ env (override) = 443
Host string ⇐ env (override) = prod-db.internal
Password string ⇐ env = •••-pw (secret)
LogLevel string ⇐ env (override) = warn
JWTSecret string ⇐ env = •••key (secret)
Sixteen fields come from the JSON base, eight from defaults, and a handful of
operator env vars override the rest — with Password and JWTSecret masked in
the trace but real on the struct. This is what a production Configure call
looks like end to end.