为了账号安全,请及时绑定邮箱和手机立即绑定

go 模块可以没有 go.mod 文件吗?

go 模块可以没有 go.mod 文件吗?

Go
大话西游666 2022-08-24 16:12:02
我遇到了一个似乎是Go模块的存储库,但其中没有文件:github.com/confluentinc/confluent-kafka-go。go.modgo 模块是否可以没有带有依赖项的文件,或者该库的作者只是尚未迁移到模块?go.mod
查看完整描述

3 回答

?
饮歌长啸

TA贡献1951条经验 获得超3个赞

依赖模块不需要有显式的 go.mod 文件

模块模式下的“主模块”(即包含命令工作目录的模块)必须具有一个文件,以便该命令可以找出该模块中包的导入路径(基于其模块路径),并且一旦解析,它就有一个记录其依赖项的位置。gogo.modgo

此外,使用 replace 指令插入的任何模块都必须具有文件(以减少由于替换路径中的拼写错误或其他错误而导致的混淆)。go.mod

但是,通常缺少显式文件的模块是有效且可以使用的。它的有效模块路径是它被d的路径,如果同一个存储库最终通过多个路径使用,这可能会有点混乱。由于没有文件的模块必然不会指定自己的依赖项,因此该模块的使用者必须自己填写这些依赖项(go mod tidy 会将它们标记为在使用者文件中)。go.modrequirego.mod// indirectgo.mod


查看完整回答
反对 回复 2022-08-24
?
当年话下

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

它出人意料地奏效了。


查看完整回答
反对 回复 2022-08-24
?
杨魅力

TA贡献1811条经验 获得超6个赞

模块由其 go.mod 文件定义。没有 go.mod 文件,它就不是一个模块。

从 Go 模块参考中查看此内容

模块是一起发布、版本控制和分发的包的集合。模块可以直接从版本控制存储库或模块代理服务器下载。

模块由模块路径标识,该路径在 go.mod 文件中声明,以及有关模块依赖项的信息。模块根目录是包含 go.mod 文件的目录。

模块由其根目录中名为 go.mod 的 UTF-8 编码文本文件定义。


查看完整回答
反对 回复 2022-08-24
  • 3 回答
  • 0 关注
  • 350 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信