请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

多个main.go在一个项目里面

我有注意到main.go 在一个项目里面的不同目录都多次出现,在worker/server/main.go, worker/client/main.go, itemsaver/main.go
在不同的目录启动了不同的main.go,他们可以共享一套代码。

  1. 是不是在go的一个项目中(mod创建的),可以有0个或者多个main.go,只有有main.go的地方就是可执行的。如果没有main.go就是package,可以放到别的地方执行?
  2. 另外有注意到有些项目源码中,有专门的cmd目录,cmd里面放的都是不同的package的可执行mian.go,不散落在不同的package里面,方便查找方便阅读,一目了然知道有那些可执行的,是不是这样的cmd目录的设计,就是在专门的目录存放我们当前crawler项目中的worker/server/main.go, worker/client/main.go, itemsaver/main.go?
    2.1 这样的好处,可以一套代码,然后可执行就可以分为scheduler的可执行和分布式的可执行
    2.2 另外放到cmd下面,是不是可以更方便做容器的部署,在项目根目录可以根据需要启动不同的cmd,或者都一次启动?

正在回答

1回答

这个关键不是cmd目录,而是每个包含main函数的文件都需要在自己独立的目录里。因此cmd目录下开很多子目录成了一种普遍的选择。

但另一方面,我们的代码要根据自身的模块进行划分,离自身的模块越近越好,全都放在cmd里,会导致main函数和自己的业务逻辑,比如我这里的worker/server, worker/client, itemsaver距离过远。

这边权衡的点在于我们认为worker/server, worker/client和itemsaver是一个项目的三个模块,还是三个项目。我这里显然是把它们当作三个项目来处理。

0 回复 有任何疑惑可以回复我~
  • 提问者 拧壶冲 #1
    非常感谢!
    回复 有任何疑惑可以回复我~ 2020-10-20 16:56:58
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信