我有一个简单的Go项目,它是一个Web应用程序,一个worker应用程序和一个共享文件。它们位于web.go,worker.go和shared.go(例如)文件中。
我怎样才能安装"从这个设置创建2个二进制文件?如果我把所有3个文件放在一起,我会收到错误main redeclared in this block
,因为我在同一个包中有2个主要函数。
我真的不想将这3个文件分成3个不同的目录,子目录中的2个入口点只是为了逻辑地分隔它们。
如何将它们保存在同一目录中并编译2个可执行文件?
答案 0 :(得分:4)
干净的解决方案是创建三个单独的目录。一个用于Web程序,一个用于工作程序,另一个用于两者的共享包。
或者,您也可以使用build constraints来控制构建。 GAE使用这种方法,例如,通过提供“appengine”构建标记,可以在使用GAE时用于提供不同的main。在这种情况下,您需要将任意构建标记添加到文件的开头(例如// +build worker
)并相应地调用go构建工具,方法是包含构建标记(类似go build -tags worker
)可能会工作。