3 回答
TA贡献1951条经验 获得超3个赞
依赖模块不需要有显式的 go.mod
文件。
模块模式下的“主模块”(即包含命令工作目录的模块)必须具有一个文件,以便该命令可以找出该模块中包的导入路径(基于其模块路径),并且一旦解析,它就有一个记录其依赖项的位置。go
go.mod
go
此外,使用 replace
指令插入的任何模块都必须具有文件(以减少由于替换路径中的拼写错误或其他错误而导致的混淆)。go.mod
但是,通常缺少显式文件的模块是有效且可以使用的。它的有效模块路径是它被d的路径,如果同一个存储库最终通过多个路径使用,这可能会有点混乱。由于没有文件的模块必然不会指定自己的依赖项,因此该模块的使用者必须自己填写这些依赖项(go mod tidy
会将它们标记为在使用者文件中)。go.mod
require
go.mod
// indirect
go.mod
TA贡献1890条经验 获得超9个赞
讨论的简短摘要:
答案是否定的!
此项目包含一组 go 包,但它不是 Go 模块,因为它不包含文件(尽管以前它曾经是多模块存储库 (Go)。go.mod
go get
可以以两种方式运行:模块感知模式和传统 GOPATH 模式(从 Go 1.16 开始)。
要了解有关此内容的更多信息,请使用以下命令参考文档:go
$ go help gopath-get
和
$ go help module-get
它会讲述在这两种情况下是如何工作的。go get
另外,我注意到它可以下载任何存储库,并将其视为Go包,即使它包含任意Python项目也是如此。
我做了一个简单的测试来证明这一点:
$ go get github.com/mongoengine/mongoengine
它出人意料地奏效了。
TA贡献1811条经验 获得超6个赞
模块由其 go.mod 文件定义。没有 go.mod 文件,它就不是一个模块。
从 Go 模块参考中查看此内容
模块是一起发布、版本控制和分发的包的集合。模块可以直接从版本控制存储库或模块代理服务器下载。
模块由模块路径标识,该路径在 go.mod 文件中声明,以及有关模块依赖项的信息。模块根目录是包含 go.mod 文件的目录。
和
模块由其根目录中名为 go.mod 的 UTF-8 编码文本文件定义。
- 3 回答
- 0 关注
- 350 浏览
添加回答
举报