包查找顺序
在Go支持Go Modules之后,编译时编译器会从工作目录(当前所在目录)开始并逐级向上查找是否具有go.mod文件。
- 如果有,go.mod文件中声明的module名称就视作go.mod所在的路径,然后以指定的main包为依赖入口,所有以go.mod中声明的module名称开头的导入路径都以go.mod所在的路径为相对路径进行包的查找导入。所有需要导入的路径中如果在go.mod中指定了版本,则从
$GOPATH/pkg/mod/
下取得相应版本进行导入,如果没有被指定则从$GOPATH/src/
或$GOROOT/src/
中进行查找导入。 - 如果没有,所有依赖均从
$GOPATH/src/
或$GOROOT/src/
中进行查找导入。