SuperAPI AI 工具集

go

编程与开发

查看项目

更新于 10-16 04:37

技能介绍

用途 该技能帮助编写遵循专业风格指南的 Go 代码,规范基于 Google Go 风格指南。适用于编写新的 Go 代码、将既有 Go 代码重构为最佳实践、审查 Go 代码的风格合规性、为包/函数/类型补充文档、整理 Go 文件中的导入、设计 API 与接口、以及妥善处理错误。

风格原则(按重要性排序)

  • 清晰:代码目的与理由对读者清楚。
  • 简单:以最简单的方式达成目标。
  • 简洁:代码具有高信噪比。
  • 可维护:代码易于维护。
  • 一致:代码与更大范围代码库保持一致。

强制执行的风格规则 格式化:所有 Go 源文件需符合 gofmt 输出,可执行 gofmt -w .;不固定行长(优先重构而非拆分);使用 MixedCaps 或 mixedCaps,绝不使用 snake_case;代码能自说明时让其自说明。

命名约定:包名使用小写无下划线(如 creditcard、tabwriter、oauth2),不使用 credit_card、tabWriter、oAuth2;函数与方法避免与包名重复(如 yamlconfig 包中 Parse,而非 ParseYAMLConfig);变量在小作用域用短名(i、c、db),大作用域用较长名(userCount、databaseConnection),避免在名称中嵌入类型(users 而非 userSlice);常量使用 MaxPacketSize、ExecuteBit 而非 MAX_PACKET_SIZE、kMaxBufferSize;首字母缩略词保持大小写一致(ServeHTTP、ProcessXMLAPI、userID,而非 ServeHttp、ProcessXmlApi、userId);接收者名短(1-2 个字母)、为类型缩写、方法间保持一致(如 c *Client)。

文档:包注释采用完整句子并以被描述对象开头;函数注释为完整句子并以函数名开头。

导入:按标准库、其它(项目与 vendored)包、Protocol Buffer 导入、副作用导入分组并以空行分隔;导入重命名要清晰描述;除测试外不使用 import dot。

错误处理:返回错误而非 panic;错误字符串小写且无标点;处理错误而非忽略;缩进错误流程(避免错误后 else);用 %w 包裹以支持 errors.Is/As,不想包裹时用 %v。

函数设计:保持签名简单;必要时使用命名结果;避免长函数中使用裸返回;避免重复(如 WriteTo 而非 WriteConfigTo)。

Nil 切片:优先使用 nil 切片而非空切片;不强制区分 nil 与空,通常用 len(s) == 0 判断。

接口:使用小接口,可组合接口(Reader、ReadWriter);接受接口、返回结构体。

并发:文档说明是否并发安全;context 作为第一个参数;若上下文行为特殊需在文档中说明。

测试:使用表驱动测试;测试命名如 TestParse、TestParse_InvalidInput、TestClient_Get_Success。

字面量格式:外部类型结构体字面量指定字段名,包内类型可省略;花括号对齐。

包设计:包不过大(单包数千行)也不过小(每类型一个包),按相关功能组织;避免 util、common、helper 等含糊包名,使用 cache、auth、stringutil 等具体包名。

常见模式 Options 模式:用 Options 结构体或函数式选项处理可选配置。 Constructor 模式:包内单类型用 New,多类型用 NewX(NewWidget、NewGizmo)。 Cleanup 模式:文档说明清理要求,如 Open 要求调用方调用 Close;使用 defer 清理。 Least Mechanism:优先核心语言特性(channel、slice、map、loop),其次标准库(http.Client、模板引擎),最后才用外部依赖。

工作方式 当被要求协助 Go 代码时,会:分析代码中的风格违规与清晰度问题;引用相关风格原则给出具体改进建议;重写代码片段以匹配专业 Go 风格;按 godoc 约定添加文档;正确格式化导入、分组与结构;在保持正确性的前提下简化复杂代码;应用惯用 Go 模式与最佳实践。优先清晰、简单与可维护。

参考资料

  • https://google.github.io/styleguide/go/guide
  • https://google.github.io/styleguide/go/decisions
  • https://google.github.io/styleguide/go/best-practices
  • https://go.dev/doc/effective_go
  • https://github.com/golang/go/wiki/CodeReviewComments
  • https://go-proverbs.github.io/

限制:资料未提供该技能的安装方式、运行环境要求、平台支持、收费与价格信息,暂未提供。