go依赖管理 | 青训营笔记

524 阅读1分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 9 天

(内容根据字节跳动青训营课程内容以及自己的理解编写)

近期将日更这几个主题的文章,欢迎关注!

  • Kitex
  • Hertx
  • go的测试环节
  • goFrame
  • Hertz中间件
  • Hertz路由

Go依赖管理

开发过程中使用他人的库是不可能的

正如牛顿所说,他只是站在巨人的肩膀上,go语言发展至今涌现出很多性能优良的库,还有一些c的库可以复用。

go依赖管理发展历程

image.png

Gopath

image.png

GoPath有个弊端,用的库的版本不一样的话,就会寄

Go vender

这个的缺点也是以前java开发的头疼点

image.png

依赖冲突

Go Module

按照套路来说,第三个基本就是正解了

Go module

image.png

image.png

代码中的go.mod:

image.png

可以类比java中的maven

eg:

image.png

依赖管理单元里面,比如你是从github哪里拿的源码,可以写/github/...

require里面其实和module是对应的

这里的版本号分两种:

image.png

indirect关键词

image-20230116150316203

A依赖的B,B依赖的C,那么A对B是直接依赖,A对C是间接依赖

去哪儿下依赖

万一仓库作者对代码进行了增删改查了,我们拉到的依赖就会不稳定

解决方案:(缓存、适配器)

image.png

image.png

架构师流传一句话,没有什么是加一层架构没法解决的,有的话就加两层。这里的proxy也是一个道理

一些依赖管理命令

go get

image.png

go mod

image.png