在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
当 Go 在 2009 年首次推出时,它并没有随包管理器一起提供。取而代之的是 go get,通过使用它们的导入路径来获取所有源并将其存储在 $ GOPATH/src 中。没有版本控制并且『master』分支表示该软件包的稳定版本。 它有下面特征:
go modGo Modules 是 golang 1.11 新加的特性。Go Modules 不使用 GOPATH 存储每个软件包的单个 git checkout,而是存储带有 go.mod 标记版本的标记版本,并跟踪每个软件包的版本。它生效的配置依赖 GO111MODULE 环境变量。 GO111MODULEGO111MODULE 有三个值:off, on和auto(默认值)。
当modules功能启用时,依赖包的存放位置变更为$GOPATH/pkg,允许同一个package多个版本并存,且多个项目可以共享缓存的 module go mod命令golang 提供了 go mod命令来管理包。它有以下命令:
使用 go mod初始化项目
go.mod文件一旦创建后,它的内容将会被go toolchain全面掌控。go toolchain会在各类命令执行时,比如go get、go build、go mod等修改和维护go.mod文件。
go module 安装 package 的原則是先拉最新的 release tag,若无tag则拉最新的commit go get升级运行 go get -u 将会升级到最新的次要版本或者修订版本(x.y.z, z是修订版本号, y是次要版本号) 依赖包中出现版本号我们在 import 的包中,会看到 "github.com/hajimehoshi/ebiten/v2" 这样的。这个适用gomod的特性。如果仍用这样的方式import,就必须用gomod。用GOPATH会报找不到包的。 模块在 Go 中确定了一个重要的原则,即 “导入兼容性规则”
根据这条原则,一个软件包新的主版本没有向后兼容以前的版本。这意味着这个软件包新的主版本必须使用和之前版本不同的模块路径。从 v2 开始,主版本号必须出现在模块路径的结尾(在 go.mod 文件的 module 语句中声明)。 |
请发表评论