发布时间:2025-12-09 22:14:34 浏览次数:4
go module是go官方自带的go依赖管理功能,从Go 1.13版本正式推荐使用,它可以将项目下的所有依赖集中到 go.mod 文件,进行集中管理。使用go module管理依赖将会在项目根目录下生成两个文件 go.mod(负责记录当前项目的所有依赖)和go.sum(记录每个依赖库的版本和哈希值)
我们使用如下命令开启go modules功能:
go env -w GO111MODULE=on例子
go mod init my_gin结果如下图
问题原因: 老版本我们都是在环境变量里面设置GOPATH用来管理项目的,我们第一步使用了GO Modules,GOPATH和GO Modules这两个都是用来管理项目的,开启模块支持后生成的go.mod文件,不能在GOPATH 指定的目录下
解决办法 1、: 不要在环境变量指定的GOPATH目录下创建项目,在其他目录下创建项目,你的环境变量GOPATH目录下不能存在go.mod文件(推荐)
解决办法 2、: 将环境变量GOPATH删除,因为GOPATH和go.mod都是用来管理项目,二者不能在同一个目录下,go.mod比GOPATH更高级
GOPATH(项目管理)和go.mod(go modules项目管理)比较:
1、最早的时候,Go所依赖的所有的第三方库都放在GOPATH这个目录下面,下载的依赖包也没有版本概念,这就导致了同一个库只能保存一个版本的代码。如果不同的项目依赖无法依赖同一个第三方的库的不同版本,并且,代码开发必须在GOPATH的src目录下。这在实际开发中造成许多的问题。
2、go mod的优势,项目不在需要放到$GOPATH/src,依赖包的版本控制
交由go.mod文件控制。在go.mod用require语句指定包和版本 ,go命令会根据指定的路径和版本下载包,指定版本时可以用latest,这样它会自动下载指定包的最新版本;如果,go.mod中没有指定,go命令会自动下载代码中的依赖的最新版本
错误原因,缺少go.mod文件,按照第一步跟着操作即可
以上操作每当我们修改代码的的时候,就邀重新运行一次go run main.go实行内容刷新 ,这样很麻烦,热加载就是当我们修改代码时,程序自动重新加载并且执行,省去了手动执行编译的过程
go get github.com/pilu/fresh fresh