3语言进阶和依赖管理

61 阅读2分钟

语言进阶

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 增加需要的依赖,删除不需要的依赖