go实战案例及进阶 | 青训营

65 阅读1分钟

Go实战案例

Snipaste_2023-05-20_22-37-26.png

go的底层调用

go func 类似于多线程,轻易做到上万次并发,底层实现

reader := bufio.NewReader
reader.ReadByte(...) //缓存优化,底层实现

nc ip地址 端口 // 快速建立tcp链接

go进阶

本节课3个内容

  • goroutine
    • 协程
  • channel
    • <- 协程通信
  • Sync
    • lock 并发安全

Go依赖管理

GOPATH

  • bin
    • 编译二进制文件
  • pkg
    • 中间产物,加速编译
  • src
    • 项目源码

无法实现package多版本控制

Go Vender

Go Vender是一个用于管理第三方依赖包的机制。使用 vendoring 可以实现更好的依赖管理和版本控制,使得团队协作更加方便。当你将项目共享给其他人或将其部署到其他环境时,可以保证项目使用相同版本的依赖包,避免了不同环境之间的不一致性问题。

无法控制依赖的版本,更新项目可能出现依赖冲突,导致编译出错

Go Module

  • 通过go.mod文件管理依赖版本
  • 通过go get/go mod指令工具管理依赖包

使用 Go Modules,你可以在项目中直接导入所需的包,而无需事先安装到全局 GOPATH 中。当你导入一个新的依赖包时,Go Modules 会自动下载所需的包及其指定的版本,并将其存储在一个专用的缓存目录中(通常是 $GOPATH/pkg/mod 目录)。这样,不同项目之间可以共享相同的依赖包,而不会相互干扰。 单元测试

覆盖率50%~60%,部分80%+

mock模拟