Несколько приложений, созданных из одного каталога

#go

#Вперед

Вопрос:

У меня есть простой проект Go, который представляет собой веб-приложение, рабочее приложение и общий файл. Они находятся в файлах web.go, worker.go и shared.go (например).

Как я могу «перейти к установке», чтобы создать 2 двоичных файла из этой настройки? Если я просто соединю все 3 файла вместе, я получу ошибку main redeclared in this block , потому что у меня есть 2 основные функции в одном пакете.

Я действительно не хочу разделять эти 3 файла на 3 разных каталога с двумя точками входа в подкаталогах, созданных только для того, чтобы логически разделить их.

Как я могу сохранить их в одном каталоге и скомпилировать 2 исполняемых файла?

Комментарии:

1. Это то, что вам нужно сделать. У каждого двоичного файла свой собственный каталог.

Ответ №1:

Самое простое решение — создать три отдельных каталога. Одно для веб-программы, одно для рабочей программы и общий пакет для них обоих.

Кроме того, вы также можете использовать ограничения сборки для управления своей сборкой. GAE использует этот подход, например, предоставляя тег сборки «appengine», который может использоваться для предоставления другого основного при использовании GAE. В этом случае вам нужно было бы добавить произвольный тег сборки в начало ваших файлов (например, // build worker ) и соответствующим образом вызвать инструмент сборки go, включив ваши теги сборки (что-то вроде go build -tags worker ), вероятно, должно сработать.

Комментарии:

1. @Greg Ennis Обратите внимание, что вы не должны использовать теги сборки для всего, кроме кода, зависящего от платформы, поскольку они делают ваш код недоступным для получения, т. Е. при сборке вашего пакета требуется ручное вмешательство, что не очень хорошо.

2. Да, я тоже пришел к такому выводу, прочитав больше о том, как используются теги сборки. И, например, SublimeGo, похоже, не поддерживает сборку с разными тегами. Так что я не буду заморачиваться с этим. Я думаю, просто используйте подкаталоги. Спасибо за разъяснение.