Skip to content

后端技术栈

核心原则

生成后端代码时必须使用本文档指定的技术栈和版本,禁止使用其他替代方案或过时版本。

技术栈清单

Go 1.25

版本要求:1.25

技术特点

  • 高性能编译型语言
  • 原生并发支持(goroutine)
  • 简洁的语法和强大的标准库
  • 优秀的生态系统和工具链
  • 企业级应用的主流选择

核心特性

  • 静态类型和编译时检查
  • 垃圾回收(GC)
  • 协程(goroutine)和通道(channel)
  • 接口和组合模式
  • 内置测试框架

使用约束

  • 必须遵循 Effective Go 最佳实践
  • 必须使用 gofmt 格式化代码
  • 应该使用 context.Context 管理请求上下文
  • 应该合理使用 goroutine,避免资源泄漏
  • 禁止使用过时的依赖包

参考文档Go 语言规范


Echo v4

版本要求:v4

技术特点

  • 轻量级高性能 Web 框架
  • 优秀的路由和中间件系统
  • 内置参数绑定和验证
  • 与 Go 标准库高度兼容
  • 简单易用的 API

核心特性

  • HTTP 路由和分组(Group)
  • 中间件机制
  • 请求参数绑定(JSON、Form、Query)
  • 错误处理和恢复
  • WebSocket 支持

使用约束

  • 必须使用 Echo 的错误处理机制
  • 应该使用中间件处理跨域、日志、认证
  • 应该使用 Echo 的分组路由组织 API
  • 应该使用 Echo 的参数绑定(Bind)和验证(Validate)
  • 禁止直接使用 net/http(除非有特殊需求)

参考文档Echo 框架规范


GORM v1.31

版本要求:v1.31

技术特点

  • Go 生态最流行的 ORM 框架
  • 支持丰富的查询和关联操作
  • 内置迁移和钩子机制
  • 优秀的性能和开发体验
  • 支持多种数据库

核心特性

  • 模型定义和关联关系
  • 查询构造器(Where、Join、Preload)
  • 事务管理
  • 数据库迁移(AutoMigrate)
  • 钩子(Hooks)

使用约束

  • 必须定义清晰的 Model 结构
  • 必须使用事务处理多表操作
  • 应该使用 Preload 避免 N+1 查询
  • 应该使用 GORM 的软删除功能
  • 禁止使用原生 SQL(除非性能优化需要)

参考文档GORM 使用


Go Modules(包管理)

版本要求:Go 1.25 内置

技术特点

  • Go 官方依赖管理工具
  • 简单易用的版本控制
  • 良好的依赖隔离

核心特性

  • go.mod 文件管理依赖
  • 语义化版本控制
  • 依赖缓存

使用约束

  • 必须使用 go.mod 管理依赖
  • 应该定期运行 go mod tidy 清理依赖
  • 应该使用 go mod vendor 锁定依赖版本(生产环境)

开发工具

gofmt(代码格式化)

使用约束

  • 必须在提交前运行 gofmt
  • 应该配置 IDE 自动格式化

golangci-lint(代码检查)

使用约束

  • 应该使用 golangci-lint 进行代码检查
  • 应该修复所有 lint 警告

技术栈关系图

常用依赖库

以下是项目中应该使用的常用 Go 库:

功能选用库用途
JWT 认证github.com/golang-jwt/jwtJWT token 生成和验证
配置管理github.com/spf13/viper配置文件读取
日志github.com/sirupsen/logrus 或 zap结构化日志
参数验证github.com/go-playground/validator请求参数验证
UUID 生成github.com/google/uuidUUID 生成
加密golang.org/x/crypto密码加密(bcrypt)

项目结构

标准项目结构

backend/
├── cmd/                  # 应用入口
│   └── main.go
├── internal/             # 私有代码
│   ├── handler/          # HTTP handlers
│   ├── service/          # 业务逻辑
│   ├── model/            # 数据模型
│   └── repository/       # 数据访问层
├── pkg/                  # 公共库
├── config/               # 配置文件
├── go.mod
└── go.sum

参考文档项目结构

相关文档