1.语言进阶
-
Go可以充分发挥多核优势, 高效运行。
-
Go语言一次可以创建上万个协程, 通过高效的 调度模型实现高并发协程操作。 协程:用户态,轻量级线程,栈KB级别。 线程:内核态,线程跑多个协程,栈MB级别。
-
提倡通过通信共享内存而不是通过共享内存而实现通信。
-
通道Channel
- make(chan元素类型[缓冲大小])
-
无缓冲通道
-
make(chan int)
-
有缓冲通道
-
make(chan int,2)
2.依赖管理
1.依赖包的管理
GOPATH是Go语言支持的一个环境变量,有以下结构:
src: 存放Go项目的源码
pkg:存放编译的中间产物,加快编译速度
bin: 存放Go项目编译生成的二进制文件
Vendor是当前项目中的一个目录,其中存放了当前项目依赖的副本。在Vendor机制下,如果当前项目存在Vendor目录,会优先使用该目录下的依赖,如果依赖不存在,会从GOPATH中寻找。
Go Modules是Go语言官方推出的依赖管理系统,解决了之前依赖管理系统存在的诸如无法依赖同一个库的多个版本等问题,go module从Go 1.11开始实验性引入,Go 1.16默认开启。
Go Modules 终极目标:定义版本规则和管理项目依赖关系
2.依赖管理三要素
1.配置文件,描述依赖: go.mod 每个依赖单元用模块路径+版本来唯一标示。
2.中心仓库管理依赖库: Proxy
解决:
无法保证构建稳定性 增加/修改/删除软件版本
无法保证依赖可用性 删除软件
增加第三方压力 代码托管平台负载问题
3.本地工具: go get/mod
3.个人感悟
- 从多角度了解了Go语言的优势
- 通过依赖管理三要素来更深理解Go语言
- 要多敲代码练习