繁体   English   中英

子包应该有自己的 go.mod 文件吗?

[英]Should subpackages have their own go.mod file?

我有一个类似于这tree的项目:

. proj
├── README.md
├── go.mod
├── go.sum
├── subpackage
│   ├── one.go
│   ├── two.go
│   ├── three.go
│   └── four.go
├── main.go

main.go我通过github.com/username/proj/subpackage导入一个结构和一些方法。

我没有在任何其他项目中使用子包(只有这个项目)。

除了项目根目录中的go.mod文件之外,我还应该在subpackage/中有一个单独的go.mod文件吗? 因此子包是否应该列在项目根目录的go.sum文件中?

如果没有,在完全独立的项目中使用子包目录/包的情况下是否需要它?

不需要单独的子包go.mod 使用这样的 go.mod 文件,可以使用与根 package 不同的版本单独标记子包。 仅在非常特殊的情况下才需要此用例,在这些情况下,您希望同一存储库中的软件包具有不同的版本,因此不要这样做。

您根本不必手动修改 go.sum。 它只能由 go-tooling (go get, go build) 自动修改。

即使通过导入子包在另一个项目中使用它,您也不必为子包提供不同的版本。 导入此子包时,go-tool 将搜索 git 存储库的根目录,使用go get自动下载存储库并使其可用于导入。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM