Files
everything-claude-code/rules/golang/patterns.md
Hor1zonZzz 86b5a53e5d refactor(rules): restructure into common + language-specific directories
* refactor(rules): restructure rules into common + language-specific directories

- Split 8 flat rule files into common/, typescript/, python/, golang/
- common/ contains language-agnostic principles (no code examples)
- typescript/ extracts TS/JS specifics (Zod, Playwright, Prettier hooks, etc.)
- python/ adds Python rules (PEP 8, pytest, black/ruff, bandit)
- golang/ adds Go rules (gofmt, table-driven tests, gosec, functional options)
- Replace deprecated ultrathink with extended thinking documentation
- Add README.md with installation guide and new-language template

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Fix installation commands for rules

Updated installation instructions to copy all rules to a single directory.

* docs: update README.md to reflect new rules directory structure

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

---------

Co-authored-by: Hor1zonZzz <Hor1zonZzz@users.noreply.github.com>
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-05 05:58:06 -08:00

828 B

Go Patterns

This file extends common/patterns.md with Go specific content.

Functional Options

type Option func(*Server)

func WithPort(port int) Option {
    return func(s *Server) { s.port = port }
}

func NewServer(opts ...Option) *Server {
    s := &Server{port: 8080}
    for _, opt := range opts {
        opt(s)
    }
    return s
}

Small Interfaces

Define interfaces where they are used, not where they are implemented.

Dependency Injection

Use constructor functions to inject dependencies:

func NewUserService(repo UserRepository, logger Logger) *UserService {
    return &UserService{repo: repo, logger: logger}
}

Reference

See skill: golang-patterns for comprehensive Go patterns including concurrency, error handling, and package organization.