框架基础
go.mod 用来存储包的require描述。
go.sum 用来存储依赖包特定版本的加密校验和 (go会在go module启用时在本地建立一个go.sum文件)
go命令: go module / go run / go build /go test / go env /go mod tidy
在go 1.16之前的版本中,运行go命令(如go run, go build , go test)时, go会通过以下规则自动解析并下载包:1、添加特定版本的包:要import的包在go.mod文件中有对应的的require描述,则按对应描述的版本下载。 2、添加最新版本的包:要import的包 在go.mod中没有require描述,则按最新版本下载该包,同时将该包加入到go.mod中。
在go 1.16版本中,运行go命令(go run, go build,go test)时,如果import的依赖在go.mod文件中没有,不会再自动下载并修改go.mod和go.sum文件,而会提示错误,并需要手动执行 go get命令下载对应的包。
原因是自动修复的方式不是在任何场景下都适用:如果导入的包在没有提供任何依赖的情况自动添加新依赖,则可能会引起公共依赖包的升级等。
基于以上信息,Go 1.16 中的依赖需要进行如下处理:
通过在代码中修改 import 语句,来修改 go.mod:
可用于添加新模块;
删除掉无用的模块;
将未导入的模块写入 go.mod:
go get [@];
go mod t