Go工程进阶 | 青训营笔记

17 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 2 天 今天学习了Go语言工程进阶的内容

1. 并行

Go可以充分发挥多核优势,高效运行。 goroutine 是 Go语言中的轻量级线程实现,由 Go 运行时(runtime)管理。Go 程序会智能地将 goroutine 中的任务合理地分配给每个 CPU。 goroutine之间通过通信共享内存(CSP,Communicating Sequential Processes)实现通信,channel可以实现通信共享内存。 为保证并发安全,需要使用Lock和waitgroup。

2. 依赖管理

Go的依赖管理经历了三个阶段,GOPATH、Go Vender和Go Module。目前最广泛应用的是Go Module,这是Go官方推出的依赖管理系统,解决了之前的依赖管理系统存在的注入无法依赖同一个库的多个版本等问题,Go Module从Go 1.11开始实验性引入,Go1.16默认开启。 Go Proxy可以解决依赖分发的问题,Go Module通过GOPROXY环境变量控制使用Go Proxy。go get和go mod是Go Module的两个工具。 总结一下,Go依赖管理的三要素是,配置文件、描述依赖的go.mod,中心仓库管理依赖库Go Proxy,本地工具go get和go mod。

3. 测试

测试关系着系统的质量,质量决定线上系统的稳定性,测试是避免事故的最后一道屏障。测试分为回归测试、集成测试、单元测试,按顺序成本逐渐降低、覆盖率增大。 单元测试包括输入、测试单元、输出、校对。单元测试可以保证质量,一定程度上既能保证新功能本身的正确性,又不会破坏代码的正确性,还能提升效率。 Go语言还提供了基准测试框架,在实际项目中,需要对代码做性能分析,就需要用到基准测试。

4. 项目实践

完成一个项目主要分为以下步骤: 1.了解需求 2.设计ER图 3.设计分层结构,一般采用MVC模式 4.代码设计并实现