「Go 语言上手 - 工程实践」| 青训营笔记

230 阅读2分钟

这是我参与「第三届青训营 -后端场」笔记创作活动的的第一篇笔记。

go 包管理

现在日常go开发用到的就是go mod方式来进行go的依赖管理。go mod init 初始化,go download 下载依赖,go mod tidy自动删除不需要的依赖,增加需要的依赖,是最常用的命令。
gopxoxy可以缓存来自其它网站的依赖,避免因为变更产生问题。
依赖管理三要素:
    配置文件表述依赖:go.mod
    中心仓库管理依赖库:Proxy
    本地工具:go get/mod

单元测试

规则

所有测试文件以_test.go结尾,应该与待测文件放在同一目录下,go test可以直接运行该package下的测试文件
函数命名:func TestXxx
初始化逻辑放在TestMain中,func TestMain(m *testing.M){测试前初始化 code := m.Run() 测试后释放资源}

覆盖率

单元测试对代码测试的行数占总行数的比例,可以通过go test xxx --cover得到覆盖率
应该让覆盖率尽可能高来让单元测试更加完备。

Mock

打桩测试,不再依赖本地文件,可以在任何时间,任何环境下进行单元测试。
调用Patch和Unpatch 函数来打桩和恢复。

项目实战

  • 首先分析项目需求来建立ER图,明确各个实体之间的关系,建立模型,也就是对应的go项目的Model层的各个结构体。
  • 项目主要分为三个模块:Model Service Controller
  • 查询时用到sync.Once, 作用在高并发场景下只执行一次的场景,也即单例模式,可以减少存储的浪费。
  • Model层处理底层与数据库相关的操作,Service层则获取api所需要的结构体,比如可以定义PageInfo来返回。
  • 如果一次api调用返回的两个成员并无依赖关系可以考虑并行执行。