这是我参与「第三届青训营 -后端场」笔记创作活动的的第二篇笔记。
golang基础
线程属于内核态,重量级的。 一个线程可以跑多个routine,是用户态的。
go routine
字节的课没说,其实加上go这个关键字就可以做到开启routine。但是有两种:
go checkLink(link, channel)调起一个function- 用匿名函数
go func(link, channel) {
// implementation
}
channel
通信方式:
- go推荐用的channel,使用有缓冲通道有助于解决同步问题。
- 共享内存,需要及时加锁,否则会出问题。
加锁
并发问题解决,但是加锁这个方式不优雅:
wait group
用wait group比加锁好一些。
测试
- 一般覆盖率在50%~60%,重要的80+%
mock数据:
完成一个项目的流程:
- 了解项目背景
组件工具
- 使用go web框架gin: github.com/gin-gonic/g…
- go mod:
go mod initandgo get gopkg.in/gin-gonic/gin.v1@v1.3.0