深圳精品网站制作,云网站注册,如果建手机网站,长春市大学生网站建设1 语言进阶
1.1 Goroutine
线程#xff1a;内核态#xff0c;栈MB级别
协程#xff1a;用户态#xff0c;轻量级线程#xff0c;栈KB级
1.2 CSP 提倡通信实现共享内存 1.3 Channel
创建方法 make(chan 元素类型#xff0c;缓冲区大小#xff09; 无缓冲通道#x…1 语言进阶
1.1 Goroutine
线程内核态栈MB级别
协程用户态轻量级线程栈KB级
1.2 CSP 提倡通信实现共享内存 1.3 Channel
创建方法 make(chan 元素类型缓冲区大小 无缓冲通道make(chan int)有缓冲通道make(chan int,2)
示例 1.4 并发安全 1.5 WaitGroup
原理为计数器统计协程数
Add(int)表示启动了几个协程每个协程结束调用Done()主协程Wait()等待所有协程结束再推出。
示例 2 依赖管理
2.1 Go依赖管理演进 GOPATH - Go Vendor - Go Module 如今主流是go mod
2.1.1 GOPATH
目录结构 项目代码直接依赖src文件夹的代码go get下载最新版本的包到src目录下。 缺点为无法实现package的多版本控制
2.1.2 Go Vendor 项目目录下增加了vendor文件存放依赖包副本。依赖寻址先从vendor开始寻找然后再找GOPATH 缺点是无法控制依赖的版本
2.1.3 Go Module 通过go.mod文件管理依赖包版本通过go get和go mod管理依赖包
2.2 依赖管理三要素
配置文件描述依赖go.mod中心仓库管理依赖库Proxy本地工具go get/mod
2.3 依赖配置
2.3.1 go.mod 2.3.2 version
语义化版本${MAJOR}.${MINOR}.${PATCH}
基于commit伪版本
2.3.3 indirect 表示间接依赖如A直接依赖BB直接依赖C那么A间接依赖C。
2.3.4 incompatible 表示可能不兼容
2.3.5 依赖图 选择最低兼容版本
2.3.6 依赖分发-回源 从代码托管平台依赖造成一系列问题
2.3.7 依赖分发-Proxy 2.3.6 依赖分发-变量GOPROXY 从第一个网址开始寻找直到源站
2.3.7 工具-go get 2.3.8 工具-go mod 2.3.9
3 测试
3.1 单元测试 3.1.1 规则 3.1.2 例子 3.1.3 运行 3.1.4 assert 3.1.5 覆盖率 由于三行代码只执行了两行代码所以覆盖率为66.7% 一般覆盖率在50%~60%金融相关需要在80%以上。
3.2 Mock测试
导入monkey包
主要思想是打桩不改变原变量
示例 3.3 基准测试
4 项目实战
根据帖子id查询到帖子内容及相关评论