Go 子文件夹中的包组织

Go 子文件夹中的包组织,go,Go,我正在尝试制作一些包来推动github 我有以下结构 mypkg/ ------main.go ------go.mod -----/models ------------/fluids ------------/compress/compress.go ------------/std/std.go 我只想把just go文件直接放在模型/流体上,不带子文件夹,我的意思是: ------------/fluids ------------/fluids/compress.go -------

我正在尝试制作一些包来推动github

我有以下结构

mypkg/
------main.go
------go.mod
-----/models
------------/fluids
------------/compress/compress.go
------------/std/std.go
我只想把just go文件直接放在模型/流体上,不带子文件夹,我的意思是:

------------/fluids
------------/fluids/compress.go
------------/fluids/std.go
但是当从邮件文件导入时,我得到

found packages compress (compress.go) and std (std.go) in ***/mypkg/models/fluid.
有什么方法可以避免创建这么多子文件夹吗?

为了说明注释,如果要移动
流体
文件夹中的
std.go
compress.go
,则需要更改这两个文件中的第一行,以便查看:

package fluids
(或您想要的任何其他名称,只要您在该文件夹中的任何文件中使用相同的包名)

如“”所述:

构建工具将包路径映射到目录。
其中一个目录中的包之间没有实际关系;目录只是提供了一种排列文件的方法。
任何包都可以导入任何其他包,前提是导入不会创建循环


没有人会强迫你创建子文件夹。但Go项目中的每个文件夹最多必须包含一个包。您在同一文件夹中有两个包,这导致了您的问题。你的选择是:1)使它们成为相同的包。2) 把它们放在不同的文件夹中。没有其他选择了。好的,谢谢。我将把整个代码放在同一个文件中,maybeNobody说它需要放在同一个文件中。两个文件完全可以接受。它们只需要是同一个包的一部分。