golang 同一个包下的文件可以分再目录放么

花间隐虎
  • 297

go语言中同一个包的文件必须放在同一个目录下么,有没什么办法分开放下,现在一个包里面有上百个文件,都放在一起,看着太乱了

回复
阅读 2.2k
2 个回答

可以再分目录放。

一个目录一般情况下只能是一个包,但目录下可以有子目录,而每个子目录都可以是一个包。

一个目录下只能一个包一般是正确的,但有个特殊情况,如果源码文件中包含了测试,测试的包名可以与主包名不同。

还有,Go 中有模块管理机制,一个模块可以由很多个包组成,即一个目录的下级目录都属于这个模块。

补充:我突然觉得,你问题里的包,从某种意义上,想表达的是一个模块,简单而言,就是 git clone 下来的内容不要理解为一个包,而要理解为一个模块。

一个简单例子。

有个目录是 github.com/poloxue/p1,假设包名为 p1。而 p1 下面还有个子目录 p2,即 github.com/poloxue/p1/p2,包名为 p2。两个不同目录下是不同的包。

如果希望 p1 目录下有两个包,可以创建一个测试文件 p1_test.go, 声明它的包名为 p1_test。

如果 github.com/poloxue/p1 目录下通过 go mod 创建了一个模块 github.com/poloxue/p1,那这里的 p1 和 p2 都属于 github.com/poloxue/p1 这个模块。

不可以。

你可以分几个包。

你知道吗?

宣传栏