go-best-practices

Solid

Use when reading or writing Go files (.go, go.mod).

Data & Documents 400 stars 39 forks Updated today

Install

View on GitHub

Quality Score: 79/100

Stars 20%
87
Recency 20%
100
Frontmatter 20%
70
Documentation 15%
100
Issue Health 10%
80
License 10%
0
Description 5%
100

Skill Content

# Go Best Practices Follows type-first, functional, and error handling patterns from CLAUDE.md. This skill covers language-specific idioms only. ## Make Illegal States Unrepresentable Use Go's type system to prevent invalid states at compile time. **Custom types for domain primitives:** ```go // Distinct types prevent mixing up IDs type UserID string type OrderID string func GetUser(id UserID) (*User, error) { // Compiler prevents passing OrderID here } // Methods attach behavior to the type func (id UserID) String() string { return string(id) } ``` **Interfaces for behavior contracts:** ```go // Define what you need, not what you have type UserRepository interface { GetByID(ctx context.Context, id UserID) (*User, error) Save(ctx context.Context, user *User) error } // Accept interfaces, return structs func ProcessInput(r io.Reader) ([]byte, error) { return io.ReadAll(r) } ``` **Enums with iota and exhaustive switch:** ```go type Status int const ( StatusActive Status = iota + 1 StatusInactive StatusPending ) func ProcessStatus(s Status) (string, error) { switch s { case StatusActive: return "processing", nil case StatusInactive: return "skipped", nil case StatusPending: return "waiting", nil default: return "", fmt.Errorf("unhandled status: %v", s) } } ``` **Functional options for flexible construction:** ```go type ServerOption func(*Server) func WithPort(port int) ServerOpt...

Details

Author
aiskillstore
Repository
aiskillstore/marketplace
Created
7 months ago
Last Updated
today
Language
Python
License
None

Similar Skills

Semantically similar based on skill content — not just same category