Go语言进阶与依赖管理 | 青训营笔记

80 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 2 天。

一、本堂课重点内容:

  • 从工程实践的角度,了解Go在企业项目开发过程中一系列基础知识点;
  • Go语言依赖管理的演进路线,演进过程中每个阶段解决了哪些问题。工程项目不可能基于标准库,由0到1编码搭建,而是要更多关注业务逻辑的实现。

二、详细知识点介绍:

  • 协程:Go可以通过高效的调度模型实现协程高并发操作;
  • 通道channel:通过通信实现共享内存;
  • sync相关关键字(Lock、WithGroup):实现并发安全操作和协程间的同步。
  • GOPATH:bin-项目编译的二进制文件,pkg-项目编译的中间产物,加速编译;src-项目源码;项目代码直接依赖src下的代码;通过go get下载最新版本包到src目录下(无法实现package多版本控制);
  • Go Vendor:vendor文件夹存放当前项目依赖的副本,解决了多个项目需要同一个package依赖的冲突问题(无法控制依赖版本,更新项目可能出现依赖冲突问题);
  • Go Module:通过go.mod文件管理依赖包版本,通过go get/go mod指令工具管理依赖包;
  • 依赖管理三要素:a.配置文件,描述依赖:go.mod;b.中心仓库管理依赖库:Proxy;c.本地工具:go get/mod。
  • 测试:测试是避免事故的最后一道屏障,分为回归测试、集成测试、单元测试,其中单元测试覆盖率最大,成本最低。
  • 单元测试规则:所有测试文件以_test.go结尾;func TestXxx(*testing.T);初始化逻辑放到TestMain中。
  • 代码覆盖率:一般在50-60%,较高要求80%+;测试分支相互独立、全面覆盖;测试单元粒度足够小,函数单一职责。

三、课后个人总结:

  • 本节课,我从工程实践的角度,了解到Go在企业项目开发过程中一系列基础知识,学到了很多。