这是我参与「第三届青训营-后端场」笔记创作活动的的第四篇笔记 Go语言上手-工程实践\
1 并发与并行
线程与协程
线程跑多个协程,线程核心态,协程用户态
Goroutine
进程通信,建议通过通道共享内存,而不是通过共享内存进行通信
通道 channel
make进行创建通道,分为有缓冲通道和无缓冲通道
并发安全Lock
lock sync.Mutex
lock.Lock()
lock.Unlock()
2 依赖管理
go path->go vendor->go moudle
go path无法解决package的版本控制
go vendor引入依赖包副本,在每个项目下增加vendor文件,无法控制依赖的版本,更新项目可能出现依赖冲突
go module:通过go mod文件管理依赖包版本,通过go get/go mod指令工具管理依赖包
依赖管理三要素:go.mod Proxy go get/mod
依赖分发:GitHub,SVN
Proxy:GOPROXY=""
go get @update @none @v1.1.2 @23dfdd5 @master
go mod: init download tidy
3 测试
回归测试、集成测试、单元测试
测试代码以_test.go结尾
依赖-》稳定&幂等
Mock函数:为一个函数打桩、为一个方法打桩