Я работаю над новым проектом с использованием Go, и мы все новички в Go. Мы следуем стандартной структуре каталогов go и располагаем всем кодом под
$ GOPATH / SRC / github.com / НазваниеКомпании / имя_проекта
который также является корнем git-репозитория
Стандартный рекомендуемый формат пути кажется немного странным, особенно если мы работаем над многоязыковым проектом, например, основанным на Go бэкендом rest / http и внешним интерфейсом html / javascript. В этом случае я бы хотел, чтобы структура моего проекта выглядела так:
/
doc/
src/
server/
main.go
module1/
module.go
client/
index.html
Makefile
Но действительно ли необходимо размещать код внутри GOPATH?
В качестве попытки я создал небольшую программу, где исходный код был за пределами GOPATH. Я мог бы легко разделить проект на пакеты, чтобы main
пакет мог ссылаться на foo
пакет в foo/
папке, используя import "./foo"
.
Насколько я вижу, есть две вещи, которые меня не устраивают:
- Другой код не может импортировать этот код. Это не проблема, так как мы создаем сервис специально для компании.
- Я не могу использовать его
go install
для установки. Это тоже не проблема. Сборочный конвейер устанавливает инструмент.
Однако он позволяет серверу сборки не размещать свою рабочую область внутри GOPATH.
Такой подход не рекомендуется? Если так, то почему?
Есть ли другие негативные побочные эффекты, кроме двух, которые я перечислил?
Имейте в виду, что это частный проект для компании, а не публичный открытый исходный код.
Отделение реального проекта от GOPATH кажется заманчивым, но нужно быть осторожным, нарушая правила, когда вы находитесь на сцене Шу.
2019 Обновление
Вам больше не нужно хранить свой проект под
GOPATH
.Поместите его в каталог за пределами
GOPATH
. Затем введите:go mod init github.com/youruser/yourproject
Вам будет хорошо идти.
источник