Golang Language Standards
Priority: P0 (CRITICAL)
Guidelines
- Formatting: Run
gofmtorgoimportson save. Usegoplsfor LSP features. - Naming: Use
camelCasefor internal (unexported) andPascalCasefor public (exported) symbols. - Packages: Use short, lowercase, singular names (e.g.,
http,user). Avoid_orcamelCasein package names. - Interfaces: Small interfaces — 1-2 methods max. Define where used (consumer side), not where implemented.
- Errors: Return
erroras the last return value. Handle errors immediately at the call-site. - Slices: Use
make(slice, len, cap)to pre-allocate capacity and avoid redundant re-allocations. - Enums: Use a const block with iota for type-safe enumerations.
- Zero Values: Leverage
zero-valueinitialization over explicitnilchecks where possible.
Anti-Patterns
- No init: Use constructors (NewService()), not init(). (not init() — it runs implicitly and makes testing harder)
- No Globals: Use DI, not global mutable state.
- No
panic: Return errors, don't panic. - No
_ignored errors: Always check and handle errors. - No stutter:
log.Error, notlog.LogError.
Verification Workflow (Mandatory)
After writing or modifying Go code:
mcp__ide__getDiagnostics— catch compile errors and gopls type diagnostics immediatelygo vet ./...— catch common mistakes (printf mismatches, unreachable code, shadowed vars)goimports -w .— fix imports and formatting in one pass