这是我参与[第五届青训营]伴学笔记创作活动的第2天。这节课主要在学习Go语言进阶与依赖管理。
-
本节课重点内容
本节课主要介绍了四个方面的内容:第一部分是开发编程,第二部分是依赖管理,第三部分是单元测试,第四部分是项目实战部分。
-
详细知识点介绍
-
关键词:Goroutine、channel、Sync(lock、waitGroup) 并发 VS 并行:并发是指多线程程序在一个核的CPU上分时间片运行;并行是指多线程程序在多个核的CPU上运行。Go可以充分发挥多核优势,高效运行。
Goroutine协程:线程的内核态,协程是用户态,一个线程可以跑多个协程,协程是一种轻量级的线程。(这也是Go语言适合高并发场景的一个重要原因)
协程之间的通信:通过通信实现共享内存。
注意:推荐使用“通过通信实现共享内存”的方式,“通过共享内存实现通信”方式可能会存在并发安全问题,解决该问题需要对临界区使用锁机制,访问同一块临界区时需要优先获取临界区的访问权限。
- Go依赖管理
GOPATH => Go Vendor => Go Module
依赖管理三要素:①配置文件,描述依赖 go.mod;②中心仓库管理依赖库 Proxy;③本地工具 go get/mod 依赖配置关键字:间接依赖indirect、对于没有go.mod文件且主版本2+的依赖使用incompatible标识。
依赖分发Proxy——实现软件稳定和可靠的依赖分发
- Go测试:主要包含单元测试、Mock测试、基准测试
衡量单元测试的效果:使用“代码覆盖率”
- 实践练习例子