我想了解在复习 go 模块和供应商目录时遇到错误的原因。显然,在主模块和供应商文件夹中具有相同的包会导致错误,我想了解原因。据我了解,如果有一个go.mod
go
甚至不应该检查vendor
文件夹的依赖关系。一旦我运行,go run ./main.go
我会收到以下错误:
main.go:3:8: ambiguous import: found package test/testpkg in multiple directories:
/Users/mic4ael/dev/mine/something-in-go/testpkg
/Users/mic4ael/dev/mine/something-in-go/vendor/test/testpkg
go build -mod=mod
但是,在用于构建二进制文件时不会发生这种情况。我会很感激解释为什么会这样。
GO111MODULE=""
$ tree
.
├── go.mod
├── main.go
├── test
├── testpkg
│ └── lib.go
└── vendor
└── test
└── testpkg
└── lib.go
去.mod
module test
go 1.15
main.go
package main
import "test/testpkg"
func main() {
testpkg.Echo("Test")
}
供应商/test/testpkg/lib.go
package testpkg
import "fmt"
func Echo(str string) {
fmt.Printf("From vendored package %s\n", str)
}
testpkg/lib.go
package testpkg
import "fmt"
func Echo(str string) {
fmt.Printf("From internal pkg: %s\n", str)
}