SuperAPI AI 工具集

go-architect

编程与开发

查看项目

更新于 10-15 21:39

技能介绍

用途:指导与审查 Go Web 应用架构,强调标准库优先、显式依赖注入与可测试性。

主要能力:

  1. 路由:使用 Go 1.22+ 增强版 http.ServeMux,支持方法+路径模式(如 "GET /api/users/{id}")、r.PathValue 取参、{path...} 通配与最具体优先的匹配规则。
  2. 结构:Server 结构体作为依赖容器并实现 http.Handler;main.go 作为组合根显式装配 DB、logger、config。
  3. 优雅关闭:signal.NotifyContext 监听信号,配合 http.Server.Shutdown 与 context.WithTimeout 排空连接。
  4. 依赖注入:通过结构体字段与构造函数传递依赖,接口定义在消费方且保持窄小(1-3 方法)。
  5. 项目结构:小项目用扁平单包,规模变大后迁移到 cmd/、internal/ 的模块化/领域驱动布局。

使用方式:按硬性门槛检查——使用 1.22+ ServeMux 特性前先运行 go version 确认工具链为 go1.22+;main.go 或 cmd/.../main.go 中可见地构造服务器并注入共享依赖;长驻 HTTP 服务须用带超时的 Shutdown;handler 与领域代码不得读取 os.Getenv 或使用包级 var 获取 DB/客户端。

适用场景:新建 Go 项目脚手架、讨论包布局、搭建生产 HTTP 服务、设计服务与 handler 连接、审查构造函数与装配逻辑。

限制与反模式:避免全局数据库变量、init() 副作用、框架优先思维(先 http.NewServeMux,确有需要再引入 chi/echo/gin)、按技术层划分的巨型 handlers 包、在业务逻辑中读取配置。若项目须停留在旧版 Go,则不得使用上述 1.22+ API,需改用兼容路由或旧模式。具体参考文档路径为 references/project-structure.md、references/graceful-shutdown.md、references/dependency-injection.md。