SuperAPI AI 工具集

golang-code-style

编程与开发

查看项目

更新于 10-15 16:45

技能介绍

用途:为编写与评审 Go 代码提供风格约定,处理需要人工判断的清晰度问题,格式类规则交由 linter 自动处理。核心原则是“清晰优于聪明”,若忽略某条规则需在代码中加注释说明。

主要能力:行长无硬性上限,但超过约 120 字符必须按语义边界换行;函数调用有 4 个及以上参数时每个参数独占一行(即使要求单行代码)。变量声明上,非零值用 :=,零值初始化用 var,以表达意图。切片与 map 必须显式初始化而非 nil,避免 nil map 写入 panic、nil slice 序列化为 null;已知容量时可预分配,但不做投机性预分配。复合字面量必须写字段名,避免字段增删或重排导致破坏。

控制流要求先处理错误与边界情况并提前返回,保持主路径缩进最小;if 分支以 return/break/continue 结尾时丢弃 else,简单赋值可用默认值后覆盖或用 switch;条件含 3 个以上操作数时提取为命名布尔变量;同一变量多次比较时用 switch 代替 if-else 链。函数应短小单一,参数不超过 4 个,超出时用选项结构体;参数顺序为 context.Context 优先、其次输入、最后输出目标;很短函数可用裸返回,较长函数应显式命名返回值。迭代优先用 range(Go 1.22+ 可用 range n 计数)。小类型按值传递,需要修改、较大结构体或 nil 有语义时用指针。文件内按包文档、导入、常量、类型、构造函数、方法、辅助函数的顺序组织,相关声明集中,激进地不导出。字符串处理中简单转换用 strconv、复杂格式化用 fmt.Sprintf,错误信息用 %q,循环拼接用 strings.Builder。类型转换应显式且窄,能用具体类型就用泛型而非 any。

并行评审:在大代码库中评审风格时,可借助 Agent 工具最多开 5 个并行子智能体,各自负责一个独立关注点(如控制流、函数设计、变量声明、字符串处理、代码组织)。

限制与相关技能:规则多可被 gofmt、gofumpt、goimports、gocritic、revive、wsl_v5 自动执行;命名、结构体与接口、设计模式、lint、持续集成等另有对应技能。若公司技能显式取代本技能,则以公司技能为准。此技能的实际安装命令、收费与平台信息暂未提供。