用途:为 Go 1.27 编写或审阅“顺序执行”的惯用代码,涉及错误处理、slog 日志、泛型、接口与风格。凡涉及 goroutine、channel、errgroup、context 取消,应改用 go-concurrency,本技能不覆盖。
主要能力:错误处理强调显式 if err != nil、用 %w 包装、errors.Join、errors.AsType(1.26);结构化日志使用标准库 log/slog,含 handler、attrs、groups、LogValuer;泛型含类型参数、约束、自引用类型(1.26)、泛型方法(1.27);接口遵循“消费方定义接口、返回结构体”;可用 go fix 现代器批量应用惯用法与 API 修复(1.26 起,1.27 增加更多)。
关键规则:错误必须显式判断,禁止用 _ = err 丢弃;用 %w 而非 %v 保留调用链以配合 errors.Is/As/AsType;接口定义在使用处而非实现处;默认值接收者,仅变更或大结构体用指针接收者;运行 go fix 与 go vet。
建议用法:实现前并行启动三个 agent(fuse-ai-pilot:explore-codebase、fuse-ai-pilot:research-expert、mcp__context7__query-docs)分别梳理现有模式、核对最新文档与标准库签名;实现后运行 fuse-ai-pilot:sniper 验证。
常见写法示例:包装错误 return fmt.Errorf("load user %d: %w", id, err);1.26 泛型检查 errors.AsType*fs.PathError;日志 slog.New(slog.NewJSONHandler(os.Stdout, nil)) 后 logger.Info("user created", "id", id, slog.Duration("took", elapsed));热点路径用 slog.LogAttrs 减少分配。
目录结构惯例:internal/user 下放 user.go(结构体加值接收者方法)、errors.go(哨兵与类型化错误)、repository.go(消费方接口并返回具体结构体);internal/platform/logging/logger.go 负责 slog 初始化,向下注入单个 *slog.Logger。
限制:资料未提供收费、价格、平台与效果信息。未提供完整长示例代码,仅给出上述片段与参考文档名(error-handling.md、slog-logging.md、generics-and-1.26.md、interfaces-and-style.md、error-patterns.md、slog-setup.md)。