这是我参与「第五届青训营 」伴学笔记创作活动的第二天
主要从工程实践角度介绍go语言开发实践过程中的一些技术
1.语言进阶
1.并发和运行
1.1 goruntine
线程,比较更深入系统,属于内核态,线程里面可以跑很多个协程,他的栈在mb级 协程,用户态,在go语言里面实现,是轻量级线程,栈在kb级别
开启协程
开启协程只需要在调用函数的前面加一个go关键字
csp协程通信
协程通过通信共享内存,而不是通过共性内存来实现通信
channel具体操作
区别: 无缓冲通道:发送接受数据同步化
并发安全
不加锁可能会导致函数运行出现错误结果 共性内存需要进行保护
waitgroup
这是一个管理协程的一个方法,里面有一个计数器,来判断协程完成数量
2.依赖管理
工程项目不仅仅基于基本库 目前来说广泛应用的依赖为gomodule gopath依赖
新版本默认开启gomodule
依赖管理三要素
1.gomod
多个依赖,选择最低兼容版本
2.依赖分发-proxy
3.go mod和go get工具
3.测试
三种类型
1.回归测试
2.集成测试
3.单元测试
单元测试
一些测试规则
覆盖率没听懂。。。 单元测试的两个目标
- 幂等性 2. 稳定性
mock测试(测试依赖)
打桩测试
基本测试
本地测试??? 讲的就很梦幻
项目实战
1.定义实体,对应出来文章和帖子的结构体 2.初始化数据索引 3.初始化