我有注意到main.go 在一个项目里面的不同目录都多次出现,在worker/server/main.go, worker/client/main.go, itemsaver/main.go
在不同的目录启动了不同的main.go,他们可以共享一套代码。
- 是不是在go的一个项目中(mod创建的),可以有0个或者多个main.go,只有有main.go的地方就是可执行的。如果没有main.go就是package,可以放到别的地方执行?
- 另外有注意到有些项目源码中,有专门的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,或者都一次启动?