SuperAPI AI 工具集

go-service

数据与分析

查看项目

更新于 10-15 17:29

技能介绍

用途:该技能面向生产级 Go 微服务开发,采用标准库、sqlc(SQL 代码生成)、urfave/cli(命令行)与 slog(结构化日志)。适用于创建或修改 Go HTTP 服务器、添加路由、中间件等任务。

主要能力与原则:单一职责;简单优先(纯 JSON、标准 SQL、环境变量);可组合;显式依赖,不用全局变量或单例,一切通过参数传递。

项目结构:cmd/server 与 cmd/client 为入口,cli/ 为 CLI 实现,client/ 为公共客户端库,internal/db 存放 sqlc 生成代码,migrations/ 与 queries/ 分别存放 SQL 迁移与查询,另有 examples/、testdata/、Makefile、.air.toml、sqlc.yaml、go.mod 等。

用法要点:handler 写成返回 http.Handler 的函数(Mat Ryer 风格);中间件用 adapter 组合,adaptHandler 逆序应用使第一个为最外层;依赖注入通过接口与构造函数显式传入;slog 用 JSON handler 输出到 stderr,按 DEBUG/INFO/ERROR 分级,LOG_LEVEL 环境变量控制,生产默认 WARN、开发默认 DEBUG;sqlc 按 sqlc.yaml 配置从 queries/ 与 migrations/ 生成到 internal/db,schema 变更后需重新生成并提交生成代码;错误用 fmt.Errorf 加 %w 包装;CLI 用 urfave/cli,支持环境变量绑定与内置帮助。

开发流程:先设计接口,TDD 测试先行,每个服务端功能配套客户端方法与 CLI 子命令,使用 Makefile(make test、make lint、make dev、make build-server),Air 热重载,golangci-lint 严格检查。Unix 风格:默认安静,仅错误或重要事件输出;stdout 输出 JSON,可用 --format=table|json|csv;错误写 stderr;退出码 0 表示成功。

限制:资料未提供具体版本要求、安装命令、性能数据或收费信息。