Go语言工程实践

88 阅读1分钟

01-Go的高性能:并发编程

  1. 协程:用户态,轻量级线程,Go可以多核并行;

  2. 通道channel,通过通信实现内存共享。

无缓冲通道 make(chan int)、有缓冲通道 make(chan int,2);

  1. Sync关键字,实现并发安全操作和协程间的同步;

02-Go的依赖管理

1.Go依赖演进

Go的依赖管理主要经历3个阶段:GOPATH -> Go vendor -> Go Module。

GOPATH是go语言的一个环境变量,下有bin(项目编译的二进制文件),pkg(中间产物,加速编译),src(项目源码)三个文件夹。

pkg改变版本,src只能存在一个版本,所以不保证能通过编译。为了解决这个问题,Go vendor出现。

vendor每个项目引入一个依赖副本,解决依赖冲突。可是不能很好的控制依赖版本,更新项目有可能出现依赖冲突,导致编译出错。Go Module 应运而生。

2.Go module 实践

通过 go.mod 文件管理依赖包版本,通过 go get/go mod指令工具管理依赖包。
    go mod init       初始化,创建go.mod文件
    go mod download   下载模块到本地缓存
    go mod tidy       增加需要的依赖,删除不需要的依赖

管理依赖三要素:1.配置文件,描述依赖。(go.mod) 2.中央仓库管理依赖库。(Proxy) 3.本地工具。(go get/mod)

03-测试

工作中复杂的项目,要每一部分都能测试稳定运行。这就要求不依赖外部,要求稳定幂等。实现这一目的需要mock机制。

image.png

Go语言还提供了基准测试框架。

image.png