go - 从一个目录构建多个应用程序

标签 go

我有一个简单的 Go 项目,它是一个 Web 应用程序、一个辅助应用程序和一个共享文件。这些在文件 web.go、worker.go 和 shared.go 中(例如)。

我如何“开始安装”以从此设置创建 2 个二进制文件?如果我只是将所有 3 个文件放在一起,则会出现错误 main redeclared in this block 因为我在同一个包中有 2 个主要函数。

我真的不想将这 3 个文件分成 3 个不同的目录,并在子目录中创建 2 个入口点,只是为了在逻辑上将它们分开。

如何将它们放在同一个目录中并编译 2 个可执行文件?

最佳答案

干净的解决方案是创建三个单独的目录。一个用于 web 程序,一个用于 worker 程序,一个用于它们的共享包。

或者,您也可以使用 build constraints来控制你的构建。例如,GAE 通过提供一个“appengine”构建标记来使用这种方法,该标记可用于在使用 GAE 时提供不同的 main。在这种情况下,您需要将任意构建标记添加到文件的开头(例如 //+build worker)并相应地调用 go build 工具,方法是包含您的构建标记(类似于go build -tags worker) 应该可以工作。

关于go - 从一个目录构建多个应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24595785/

相关文章:

time - 获取 time.Time 月份的最后一天

http - 什么是命名 cookie?

go - 如何根据字节大小比较文本的原始版本和 gzip 版本

ssl - 如何验证我的 TLS 服务器是否正在加密流量?

go - 为什么 golang Web 处理程序内的文件 "writing"之后的消息不显示?

为所有处理程序设置标题

go - golang.org/x/oauth2/google 库是否支持服务到服务身份验证?

Golang zmq 绑定(bind),ZMQ4,返回包错误找不到文件 zmq.h

go - 从前面截断缓冲区

go - 在新声明中设置值