依赖模块不需要有显式的 go.mod 文件。模块模式下的“主模块”(即包含命令工作目录的模块)必须具有一个文件,以便该命令可以找出该模块中包的导入路径(基于其模块路径),并且一旦解析,它就有一个记录其依赖项的位置。gogo.modgo此外,使用 replace 指令插入的任何模块都必须具有文件(以减少由于替换路径中的拼写错误或其他错误而导致的混淆)。go.mod但是,通常缺少显式文件的模块是有效且可以使用的。它的有效模块路径是它被d的路径,如果同一个存储库最终通过多个路径使用,这可能会有点混乱。由于没有文件的模块必然不会指定自己的依赖项,因此该模块的使用者必须自己填写这些依赖项(go mod tidy 会将它们标记为在使用者文件中)。go.modrequirego.mod// indirectgo.mod
讨论的简短摘要:答案是否定的!此项目包含一组 go 包,但它不是 Go 模块,因为它不包含文件(尽管以前它曾经是多模块存储库 (Go)。go.modgo get可以以两种方式运行:模块感知模式和传统 GOPATH 模式(从 Go 1.16 开始)。要了解有关此内容的更多信息,请使用以下命令参考文档:go$ go help gopath-get和$ go help module-get它会讲述在这两种情况下是如何工作的。go get另外,我注意到它可以下载任何存储库,并将其视为Go包,即使它包含任意Python项目也是如此。我做了一个简单的测试来证明这一点:$ go get github.com/mongoengine/mongoengine它出人意料地奏效了。