我们正在将内部代码库从dep依赖项管理器转换为go模块(vgo或使用go1.11.2内置)。假设我们有这样的代码:
$ GOPATH / src / mycompany / myprogram / main.go:
package main
import (
"fmt"
lib "mycompany/mylib" )
func main() {
fmt.Println("2+3=", lib.add(2, 3))
}
Run Code Online (Sandbox Code Playgroud)
$ GOPATH / src / mycompany / myprogram / go.mod:
module mycompany/myprogram
Run Code Online (Sandbox Code Playgroud)
(它没有任何依赖关系;我们的实际代码中有)。
$ GOPATH / src / mycompany / mylib / lib.go:
package mylib
func Add(x int, y int) int {
return x + y
}
Run Code Online (Sandbox Code Playgroud)
我没有将此代码模块化。不管我是否做都不重要。
这些是简单的示例,但是我们的内部代码遵循与历史上类似的结构。
由于这些目录位于Gopath上,因此export GO111MODULE=auto仍可以像以前一样进行构建,并且可以正常工作(未使用模块,因为我们位于gopath上)。但是,设置后,export GO111MODULE=on我立即收到错误消息:
build mycompany/myprogram: cannot find …Run Code Online (Sandbox Code Playgroud)