Go项目入门|青训营笔记

98 阅读2分钟

这是我参与「第三届青训营 -后端场」笔记创作活动的的第2篇笔记。

同步

Goroutine

image.png go func(){}

CSP

Comunicating Sequential Processes 提倡通过通信共享内存(左) image.png

Channel

make(chan 元素类型,缓冲大小) 无缓冲即为同步

image.png

Lock

锁内存,同时操作
lock.Lock()
lock.Unlock()

WaitGroup

暴露了三个方法
Wait()Done()Add()

依赖管理

依赖管理演进

GOPATH

Go项目工作区,直接go get包到src中

Go Vender

项目目录增加vendor文件,依赖包副本形式放在/vendor/ 无法直接映射版本

Go Module

1.16自动支持 通过go mod/go get 指令工具管理依赖包

管理三要素

  1. 配置文件,描述依赖
  2. 中心仓库管理
  3. 本地工具 go get/mod

go.mod

image.png 依赖管理基本单元(依赖范围) 原生库(go版本) 单元依赖(依赖包和版本依赖)

依赖配置 version

image.png commit V...-时间戳-hash

依赖配置 indirect

非直接依赖,注释中包含indirect

依赖配置 incompatible

相当于检查,如果存在多版本 却没有指定vN文件夹,就+incompatible标识

image.png

依赖分发 回源

image.png

GOPROXY

direct如果代理没有就去源站找 image.png

go get工具

image.png

go mod工具

go mod tidy 每次运行都可以线运行一下 image.png

单元测试

回归测试 (刷一下抖音)
集成测试 对于系统功能验证 一般自动化
单元测试 开发阶段

单元测试

* 测试文件以_test.go结尾
* func TestXxx(*testing.T){}
* 初始化逻辑放到TestMain()中

assert

asset.Equals()等验证方法

覆盖率

go test judgement_test.go judment.go --cover
输出多少的代码已经被测试过了
56-60% 自建类要求更高一些80%

单元测试依赖

稳定且幂等,相互隔离

Mock

打桩函数 替换原有的函数,此处相当于不去读取原文件了 image.png

基准测试

fstrand快速随机数

*testing.B   基准测试
*testing.PB  并行基准测试

项目实践

需求分析 ER图 分层设计

分层结构

数据层 数据Model 处理数据增删改查
逻辑层 业务Entity 处理核心业务逻辑
视图层 试图view处理和外部交互的逻辑

GIN web框架
数据库 读文件 反序列化

Service

参数校验

Controller