Go语言入门--工程实践 一、并发 VS 并行 1.1 Goroutine
协程:用户态,轻量级线程,栈KB级别。
线程:内核态,线程跑多个协程,栈MB级别。
1.2 CSP(Com穆尼擦听 Sequential Processes)
提倡通过通信共享内存而不是通过共享内存而实现通信
1.3 Channel make(chan元素类型,【缓冲大小】) & 无缓冲通道 make(chan int) & 有缓冲通道 make(chan int,2)
A 子协程发送0~9数字
B 子协程计算输入数字的平方
主协程输出最后的额平方数
1.4 并发安全Lock
1.5 WaitGroup
计算器
开启协程+1;执行结束-1;主协程阻塞知道额计算器为0.
二、依赖管理 2.1 Go 依赖管理演进
2.1.2 GO VEndor
项目目录下增加vendor 文件, 所有依赖包副本形式放在$ProjectRoot/vendeor
依赖寻址方式: vendor => GOPATH
2.1.2 Go Vendor --- 弊端
2.1.3 Go Module
& 通过 go.mod 文件管理依赖包版本
& 通过 go get/go mod 指令工具管理一览宝
2.2 依赖管理三要素
- 配置文件,描述依赖 go.mod
- 中心仓库管理依赖库 proxy
- 本地工具 go get/mod
2.3.5
依赖分发---回源
依赖分发---Proxy
三、测试
3.1 单元测试
3.1.1 规则:
3.1.2 单元测试---assert
3.1.5 单元测试---覆盖率