这是我参与「第三届青训营 -后端场」笔记创作活动的的第2篇笔记
1.语言进阶
1.1 Goroutine
线程:用户态
协程:内核态。线程跑多个协程
在函数前面加上go即可让函数变为并发函数:
func hello(i int){
println("hello goroutine :" + fmt.Sprint(i))
}
func HelloGoRoutine(){
for i := 0; i <5; i++{
go func(j int){
hello(j)
}
}
time.Sleep(time.Second)
}
1.2 Communicating Sequential Process
提倡通过通信共享内存
1.3 Channel
src := make(chan元素类型,[缓冲大小])
1.4 并发安全 Lock
lock sync.Mutexd 在并发地对变量计算时如果不加锁结果可能不对
1.5 WaitGroup
可以用来实现协程的同步阻塞
2. 依赖管理
2.1.1 GOPATH
多个项目可能会依赖一个库的不同版本-》无法实现package的多版本控制
2.1.2 Go Vendor
同一个项目也可能需要一个库的不同版本!-》无法控制依赖的版本
2.1.3 go Module
2.2 依赖管理三要素
2.2.1 配置文件 描述依赖 go.mod
2.2.2 中心仓库管理依赖库 Proxy
依赖分发 如果我们直接依赖github上面的代码,将无法保证构建稳定性,依赖可用性,第三方压力(作者可以增删改源码),这个时候我们需要go proxy 他是一个服务站点,会缓存源站中的内容
2.2.3 本地工具
3. 测试
4. 项目实战
4.1分层结构 数据层 逻辑层 视图层 4.2 组件工具 gin
链接:www.topgoer.com/gin%E6%A1%8…
简介:
- Gin是一个golang的微框架,封装比较优雅,API友好,源码注释比较明确,具有快速灵活,容错方便等特点
- 对于golang而言,web框架的依赖要远比Python,Java之类的要小。自身的
net/http足够简单,性能也非常不错 - 借助框架开发,不仅可以省去很多常用的封装带来的时间,也有助于团队的编码风格和形成规范
go mod