Go语言快速上手(六) | 青训营笔记

90 阅读2分钟

这是我参与「第三届青训营 -后端场」笔记创作活动的第6篇笔记,非常感谢字节跳动无偿地分享技术知识并细致地讲解指导。本篇笔记主要介绍“社区话题页面”的项目实战。

一、 需求描述

实现一个“社区话题页面”,包括下列功能:

  1. 展示话题(标题,文字描述)和回帖列表

  2. 暂不考虑前端页面实现,仅仅实现一个本地web服务

  3. 话题和回帖数据用文件存储

二、 用例图

image.png

三、 E-R图

image.png

四、 分层结构

image.png

五、 组件工具

go mod init

go get

六、 Repository

image.png

七、设计逻辑

  1. 首先省去数据库连接,直接用本地文件存储数据;

  2. 使用map结构直接把所有话题和帖子的数据都加载到内存中,即上面两个变量topicIndexMap、postIndexMap;

  3. 定义数据访问层Dao,使用sync.Once来初始化变量;定义Query操作函数,直接返回对应Map的索引结果值。

  4. 实现服务层Service,定义页面信息结构体PageInfo,主功能函数直接创建一个查询页面流NewQueryPageInfoFlow,并返回它的Do函数。

  5. 实现查询页面流的Do函数,分为验证id参数、查询page Info、打包page Info三步,使用go routine来并发查询page Info中的话题Topic和帖子Post,最终返回page Info。

  6. 构建View对象Page Data,包括Code、Msg、Data三个成员,从原始请求的string中解析出int类型的id,调用服务层的功能函数获取page Info,最后包装并返回Page Data。

  7. main函数Router,包括如下步骤: (1) 初始化数据索引; (2) 初始化引擎配置; (3) 构建路由; (4) 启动服务;

八、 go代码

代码链接: link.juejin.cn/?target=htt…