问题描述
标题可能有点混乱,但我在 golang 中工作,基本上我想尽量减少我导入的目录数量,但我也不希望在一个文件夹中有一堆文件.我目前有一个 pkg 目录,其中一个文件夹标记为 cost,其中有一个标记为 cost.go 的文件。在成本文件夹下,我放置了标记为 helper、response 和 model 的子主管(所有这些都包含大约 5-6 个文件)。我已经设置好所有提到的包都是成本文件夹的子目录,并且它们都在顶部有“包成本”。但是,当我尝试使用 cost.go 中某个子目录中的函数或结构时,出现错误。
有没有什么办法可以做我想做的事情,而无需从这些文件夹中取出所有文件并将它们直接放入成本文件夹中,而不必制作帮助程序、响应程序和建模自己的包?
解决方法
但是,当我尝试使用 cost.go 中的一个子目录中的函数或结构时,我收到一个错误。
Go 中包的定义是“同一目录中的源文件的集合”(来自 How to Write Go Code)
为了记录,这取决于实现,因为 official specs 使用单词“可能”:
一个实现可能要求一个包的所有源文件都位于同一目录中。
但是,我不知道还有其他不强制执行此操作的实现,因此无论如何我都不建议切换。
有什么方法可以做我想做的事,而无需从这些文件夹中取出所有文件并将它们直接放入成本文件夹
不,使用标准的 Go 实现。
而不必制作帮助程序、响应程序和建模自己的包?
没有。如果您将这些源组织到单独的文件夹中,无论父文件夹是什么,您都必须为它们声明一个新包。