实战指南)
cc-skills-golang 代码质量技能完全教程错误处理、命名规范与防御性编程safety实战指南【免费下载链接】cc-skills-golang A collection of Golang agentic skills that works项目地址: https://gitcode.com/gh_mirrors/cc/cc-skills-golangcc-skills-golang 是一组专为 Golang 打造的 AI 编程智能体技能包其中的golang-error-handling、golang-naming、golang-safety三大技能分别覆盖 Go 错误处理、命名规范与防御性编程这三个代码质量的基石。本文面向新手用最少的心智负担带你掌握这三项技能的核心实践让你的 Go 代码一次就写得地道。什么是 cc-skills-golang30 秒上手 简单说它是一份喂给 AI 编程助手的专业 Go 经验手册。每个技能都是一套可复用的指令集按需加载、不占上下文支持 Claude Code、Codex、Gemini CLI、Cursor、Copilot 等主流工具。最快安装方法以 Cursor 为例克隆到技能自动发现目录即可git clone https://gitcode.com/gh_mirrors/cc/cc-skills-golang ~/.cursor/skills/cc-skills-golang安装后AI 助手在写 Go 代码时会自动遵循这些规范。项目说明详见 README.md。三大代码质量技能速览技能解决的问题技能文件⚠️ golang-error-handling错误如何创建、包装、检查、记录skills/golang-error-handling/SKILL.md golang-naming变量、包、接口、错误该怎么命名skills/golang-naming/SKILL.md golang-safety如何避免 nil panic 与静默数据损坏skills/golang-safety/SKILL.md三者交叉引用、互相补全——比如错误命名规则放在 naming 里nil 接口的错误陷阱放在 safety 里因此建议整套一起使用。Go 错误处理核心新手必背的 5 条铁律错误是 Go 的返回值而不是异常。以下是 SKILL.md 中最值得记住的五条返回的 error 必须检查绝不用_丢弃包装时加上上下文fmt.Errorf(读取配置: %w, err)让错误层层读下来像一条链路错误信息全小写、无结尾标点如connection refused而非Connection failed.用errors.Is/errors.As检查错误而不是err ErrNotFound直接比较包装后直接比较会失效单一处理原则错误要么记录日志要么返回绝不同时做两件事否则日志聚合系统里全是重复条目。更多细节可深入阅读错误的创建与低基数消息设计error-creation.md%wvs%v的选择与错误链检查error-wrapping.md记录/返回模式与 panic/recover 设计error-handling.md 一个高频场景哨兵错误var ErrNotFound errors.New(not found)用于调用方要匹配的条件自定义错误类型用于调用方要提取结构化数据信息性错误直接用fmt.Errorf即可。Go 命名规范速查表写出Go 味的标识符命名上最大的坑是用 Python 习惯写 Go。以下是 golang-naming 给出的关键约定元素约定示例所有标识符MixedCaps禁止下划线MaxPacketSize/userCount避免结巴名字不重复包名http.Client而非http.HTTPClient常量MixedCaps不是全大写MaxRetries而非MAX_RETRIES错误变量Err前缀ErrNotFound错误类型Error后缀PathError布尔字段is/has/can前缀isConnected构造函数单一主类型用New多类型用NewTypeNameuser.New()、http.NewRequest错误字符串全小写含缩写invalid message id新手最容易踩的三个命名错误All_Caps 常量——Go 用大小写表达可见性而非强调MAX_SIZE是错的GetName()式 getter——Go 省略Getuser.Name()在调用处读起来才自然错误信息里的大小写混用——错误串常被拼接进更长句子invalid message ID应写成invalid message id。完整规则可查阅四个专题文档packages-files.md包与文件、identifiers.md变量与接收者、functions-methods.md函数与选项、types-errors.md类型、常量与错误。防御性编程实战safety7 个让你程序 panic 的陷阱safety 技能的核心口号是Security 防的是攻击者safety 防的是我们自己手滑。nil 相关 panic 是 Go 中最常见的崩溃以下 7 个陷阱按出现频率排列typed nil 接口陷阱返回一个 nil 的指针如*MyHandler到error/http.Handler接口里接口值并不等于 nil类型描述符仍在下游if err ! nil判断会误判成功往 nil map 写数据必 panic读可以得零值写不行——先make(map[K]V)再赋值append别名陷阱容量够时append复用底层数组两个 slice 共享内存改一个另一个跟着变整数转换静默截断int64转int32溢出时不报错直接回绕30 亿会变成 -12.9 亿转换前先做边界检查浮点数不要用比较0.1 0.2 0.3是 false用 epsilon 近似比较循环里写deferdefer在函数退出时才执行循环中打开的资源会一直积压应把循环体抽成独立函数导出函数返回内部 slice/map 引用调用方会悄悄改坏你的内部状态应返回防御性拷贝。 深入参考文档nil 深度剖析nil 接收者、nil 函数值、错误比较nil-safety.mdslice/map 深度剖析子切片内存滞留、slices.Cloneslice-map-safety.md自动化护栏用 linter 强制执行质量规则 人会忘工具不会。上述大部分问题都能被 linter 自动捕获错误处理类errcheck未检查的错误、nilerr错误的 nil 比较命名类revive、misspell、errname错误命名检查安全类govet、staticcheck、forcetypeassert裸类型断言。skills/golang-lint/SKILL.md 技能提供了完整的 linter 配置指南配合 skills/golang-continuous-integration/SKILL.md 还能在 CI 中跑自动化的 AI 代码评审把质量规则变成流水线里的硬性关卡。新手落地路线3 步养成良好代码质量习惯第一步装好技能包让 AI 助手在写代码时自动遵循三大技能第二步按本文速查表自查现有代码——先改命名再补错误检查最后排查 nil/slice 陷阱第三步接入 linter CI 评审把靠记变成靠查。想继续进阶项目还提供 golang-testing测试、golang-concurrency并发、golang-security安全等 40 技能覆盖从项目布局到可观测性的全生命周期按需安装即可。【免费下载链接】cc-skills-golang A collection of Golang agentic skills that works项目地址: https://gitcode.com/gh_mirrors/cc/cc-skills-golang创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考