Agent skill · software engineering · affaan-m
golang-patterns
用于构建健壮、高效且可维护的Go应用程序的惯用Go模式、最佳实践和约定。
Why this skill is useful
Provides specific Go patterns and best practices that enhance code quality and maintainability, which the AI may not generate on its own.
What it needs
About 7k tokens when loaded. Last updated 2026-08-06. 238,342 stars on the source repository.
What this skill does
Go 开发模式 用于构建健壮、高效和可维护应用程序的惯用 Go 模式与最佳实践。 何时激活 编写新的 Go 代码时 审查 Go 代码时 重构现有 Go 代码时 设计 Go 包/模块时 核心原则 1. 简洁与清晰 Go 推崇简洁而非精巧。代码应该显而易见且易于阅读。 2. 让零值变得有用 设计类型时,应使其零值无需初始化即可立即使用。 3. 接受接口,返回结构体 函数应该接受接口参数并返回具体类型。 错误处理模式 带上下文的错误包装 自定义错误类型 使用 errors.Is 和 errors.As 检查错误 永不忽略错误 并发模式 工作池 用于取消和超时的 Context 优雅关闭 用于协调 Goroutine 的 errgroup 避免 Goroutine 泄漏 接口设计 小而专注的接口 在接口使用处定义接口 使用类型断言实现可选行为 包组织 标准项目布局 包命名 避免包级状态 结构体设计 函数式选项模式 使用嵌入实现组合 内存与性能 当大小已知时预分配切片 为频繁分配使用 sync.Pool 避免在循环中进行字符串拼接 Go 工具集成 基本命令 推荐的 Linter 配置 (.golangci.yml) 快速参考:Go 惯用法 惯用法 描述 ------- ------------- 接受接口,返回结构体 函数接受接口参数,返回具体类型 错误即值 将错误视为一等值,而非异常 不要通过共享内存来通信 使用通道在 goroutine 之间进行协调 让零值变得有用 类型应无需显式初始化即可工作 少量复制优于少量依赖 避免不必要的外部依赖 清晰优于精巧 优先考虑可读性而非精巧性 gofmt 虽非最爱,但却是每个人的朋友 始终使用 gofmt/goimports 格式化代码 提前返回 先处理错误,保持主逻辑路径无缩进 应避免的反模式 记住:Go 代码应该以最好的方式显得“乏味”——可预测、一致且易于理解。如有疑问,保持简单。
How to use it
Reference it in AdaL, Claude Code, Cursor or any coding agent — nothing to install:
@skills affaan-m/golang-patterns--91bdd3