1 回答
TA贡献1993条经验 获得超5个赞
这不是惯例,您可以随心所欲地做,但通常的做法是cmd在项目根目录中有一个文件夹,所有可执行文件都在该文件夹下,每个文件夹都是自己的文件夹。
因此,在您的情况下,一个好的解决方案可能很简单:
host.com/project/
cmd/
project/
project.go
filea.go
fileb.go
在filea.go和fileb.go包声明应该是:
package project
在cmd/project/project.go包和导入声明中应该是:
package main
import "host.com/project"
当然如果你的项目比较复杂,你可以在项目根目录下创建更多的包,它可能有多个命令(多个main包),例如:
host.com/project/
cmd/
project/
project.go
prjtool/
prjtool.go
packagex/
x.go
packagey/
y.go
filea.go
fileb.go
遵循此布局的示例是非常流行的 Go Delve 调试器(目前 4.5k 星),可在https://github.com/derekparker/delve获得。
一个非常复杂的存储库示例是golang.org/x/tools包,它是多个基本 Go 工具的集合,可在https://github.com/golang/tools/获得。它的cmd文件夹包含 20 多个子文件夹(命令),许多工具(main包)甚至由多个.go文件组成(但每个文件都使用package main声明,形成一个可执行文件的包)。
- 1 回答
- 0 关注
- 90 浏览
添加回答
举报