Я працюю над новим проектом, використовуючи Go, і ми всі нові для Go. Ми слідуємо за стандартною структурою каталогу go і маємо під собою весь код
$ GOPATH / src / github.com / назва компанії / ім'я проекту
який також є коренем сховища git
Стандартний рекомендований макет шляху здається дещо дивним, особливо якщо ми працюємо над багатомовним проектом, наприклад, на базі відпочинку на базі відпочинку / 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 видається заманливим, але слід бути обережним у порушенні правил, коли ти перебуваєш на сцені Шу.