package main
import("fmt""github.com/google/uuid""github.com/sirupsen/logrus")funcmain(){
fmt.Println("hello, world")
logrus.Println(uuid.NewString())}
新源码中,我们通过 import 语句导入了 github.com/google/uuid,并在 main 函数中调用了 uuid 包的函数 NewString。
此时,如果我们直接构建这个 module,我们会得到一个错误提示:
could not import github.com/google/uuid (no required module provides package"github.com/google/uuid")
could not import github.com/sirupsen/logrus (no required module provides package"github.com/sirupsen/logrus")
我们可以使用 go mod tidy 命令,在执行构建前自动分析源码中的依赖变化,识别新增依赖项并下载它们:
升级 / 降级依赖的版本
在实际开发工作中,如果我们认为 Go 命令自动帮我们确定的某个依赖的版本存在一些问题,比如,引入了不必要复杂性导致可靠性下降、性能回退等等,我们可以手工将它降级为之前发布的某个兼容版本。
Go Module 的版本号采用了语义版本规范,也就是版本号使用 vX.Y.Z 的格式。
其中 X 是主版本号,Y 为次版本号 (minor),Z 为补丁版本号 (patch)。
主版本号相同的两个版本,较新的版本是兼容旧版本的。
如果主版本号不同,那么两个版本是不兼容的。
我们可以在项目的 module 根目录下,执行带有版本号的 go get 命令下载指定的低版本依赖包:go get github.com/sirupsen/[email protected],我们可以使用与降级同样的步骤来完成升级。