语言进阶
Go语言并发编程:
go语言特点就是”快“
go语言实现了并发性能极高的一个调度模型,通过这个调度,可以最大限度地利用资源,发挥多核的优势
协程的创建:只需要在调用函数的时候,在前面加上一个go关键字
通信
go语言提倡通过通信来共享内存,而不是共享内存来实现通信
试用通道来实现通信
chan是一种引用类型,需要通过make来创建
分为有缓冲区的通道和无缓冲区的通道
用协程和通道有并发不安全的情况,此外,还存在主线程比协程先退出的问题
waitgroup可以确保主协程最后退出
依赖管理
三个阶段
GOPATH
Go Vendor
Go Module
迭代的原因
- 不同环境倚赖的版本不同
- 控制依赖库的版本
GOPATH模式
在GOPATH下面有三个文件夹,bin为项目编译的二进制文件,pkg为项目编译的中间产物,加速编译,src为项目源码
缺点:无法实现package的多版本控制
Go Vendor模式
项目目录下增加vendor文件,所有依赖包副本行式放在$ProjectRoot/vendor
依赖寻址方式:先找vendor,后找GOPATH
通过每个项目引入一份依赖的副本,解决了多个项目需要同一个package依赖的冲突问题
Go Module模式
通过go.mod 文件管理依赖包版本
通过go get/go mod 指令工具管理依赖包
依赖文件三要素
1配置文件,描述依赖(go.mod)
2中心仓库管理依赖库(Proxy)
3本地工具(go get/mod)
关键字
indirect
如果A依赖B,B依赖C,C就是indirect的依赖
Proxy
1保证了依赖的稳定性
2降低了代码存储网站的负载
寻找依赖的步骤:先在Proxy1寻找,然后Proxy2,然后direct
工具
go get
go mod
- init 初始化,创建go.mod文件
- download 下载模块到本地缓存
- tidy 增加需要的依赖,删除不需要的依赖