Go 语言的 Modules 系统介绍

Alex-liutao ·
你不需要把你以前的包也版本化,也能正常的导入它们。只要你以前的包都在代码仓库里面就行,如果你以前的代码包只是保存在本地的文件系统里面,没有放在代码仓库的话,可以参考这里: https://groups.google.com/forum/#!msg/golang-nuts/1nYoAMFZVVM/eppaRW2rCAAJ 举个例子,我有个项目,叫 `HelloWorld`,已经像文章中所说的,把它放在非$GOPATH 目录里面, 并且已经 `go mod init` 过了,它引用了三个包: - gitlab.com/foo/pkg1 - gitlab.com/foo/pkg2 其中: - pkg1 是在代码仓库上的,并且已经按照文章的方法,把它做成了一个 module - pkg2 是在代码仓库上的,但是还是以前的老包,没有做成 module 的 要引用这两个包,直接在 `HelloWorld` 项目上运行 `go build`,pkg1 和 pkg2 都是会自动下载下来(放在 `$GOPATH/pkg/mod/` 里面了),并且可以直接使用的了。
#4
更多评论
windy_
君子知命不惧,日日自省
那可以在非gopath下创建项目运行吗
#1
启用了 module 机制的包(库)或者可执行文件,它们的代码都**必需**放在 **非GOPATH** 的目录里面,这是必需条件,不是可选的条件。 如果对 GOPATH 目录里面的项目 执行 `go mod init mod` 那么将会报错: `go: modules disabled inside GOPATH/src by GO111MODULE=auto; see 'go help modules'`
#2