GoLand 项目从 0 到 1:第一天 —— 搭建项目基础架构与核心雏形
开篇:第一天的核心任务
在《GoLand 项目从 0 到 1》专栏的第一天,我们聚焦于项目的基础搭建工作。核心任务是确定技术栈、搭建项目架构雏形,并完成理解go的调用模式,为后续开发奠定基础。经过一天的推进,项目已初步具备可扩展的架构框架,明确了各模块的职责划分,为后续功能开发铺平了道路。
注:领导比较好,其实用什么语言开发都可以,我本是Java开发工程师,从没有碰过go,领导愿意让我们尝试新东西,因为领导之前是写go的,所以项目的架构是有他来搭建的,由于也有过五年多的开发经验所以理解起来也不是特别困难。
项目需求总结(组内一起评审需求文档得出的结论)
根据项目需求文档,本项目旨在构建一个具备完整业务链路的 Golang 服务器系统,核心需求包括:
- 实现用户认证与管理功能(登录、注册、信息维护)
- 支持多数据库交互(MySQL、Redis、Neo4j 等)
- 提供标准化 API 接口及自动生成的文档
- 具备完善的中间件支持(认证、日志、跨域等)
- 支持开发 / 生产环境隔离部署,提供容器化配置
- 实现基础业务模块的 CRUD 操作示例(demo)
第一天完成的核心工作
1. 技术栈确定
采用 Go 语言 结合 Gin 框架 进行开发。Gin 作为高性能的 Web 框架,其轻量特性与路由效率能够满足项目对并发处理及响应速度的要求,同时便于后续功能扩展
2. 项目架构雏形搭建(之前有开发一个java项目,所以项目架构上差不多,业务模块,中间件模块,项目统一协议等)
基于领域驱动设计思想,完成了项目的分层架构设计,明确了各模块的职责边界:
- 区分私有业务逻辑(internal)与公共组件(pkg)
- 实现配置、日志、响应格式等基础工具的封装
- 规划多数据库与中间件的集成方案
3. 基础 Demo 开发(领导写的,便于我们熟悉)
完成了核心模块的 demo 验证,包括:
- 实现示例接口的 CRUD 操作(对应 internal/handlers/demo.go)
- 验证路由配置与中间件绑定逻辑
- 测试数据库连接与数据模型映射
4. 项目结构详解(个人理解-基于java项目理解用箭头表示)
当前项目已形成清晰的目录结构,各模块功能如下(按层级划分):
golang-server/├── main.go // 程序入口文件,负责初始化资源和启动服务 →→→ springboot启动类├── go.mod // 项目依赖管理文件,声明模块和依赖版本 →→→ pom.xml├── go.sum // 依赖包校验和文件,确保依赖完整性 →→→ Maven统一管理├── Dockerfile // 开发环境Docker构建配置├── Dockerfile.prod // 生产环境Docker构建配置├── docker-compose.yml // 多容器编排配置,定义服务依赖关系├── Makefile // 自动化脚本,包含编译、运行、测试等命令 →→→ Maven 的pom.xml中的<build>配置├── .gitignore // Git版本控制忽略规则├── README.md // 项目说明文档,包含启动指南和功能介绍├── config/ // 配置管理模块 →→→ src/main/resources/ 目录 application.yml│ ├── config.go // 配置结构体定义及加载逻辑│ ├── config.development.yaml // 开发环境配置参数(数据库、端口等)│ └── config.production.yaml // 生产环境配置参数├── docs/ // API文档模块│ ├── docs.go // Swagger文档配置元数据│ ├── swagger.json // 自动生成的API文档JSON│ └── swagger.yaml // 自动生成的API文档YAML├── internal/ // 项目私有业务逻辑(仅内部可访问) →→→ controller│ ├── handlers/ // HTTP请求处理器│ │ ├── auth.go // 认证相关接口处理(登录、注册)│