В чем причина установки GOPATH на мое рабочее пространство?
Я везде читал, что мой GOPATH
должен быть установлен в моем рабочем пространстве. Если я сделаю это и использую go get
чтобы получить пакеты, например, от github, они все добавляются в мое рабочее пространство, что я не нахожу особенно полезным, поскольку оно загромождает мое рабочее пространство. В моей рабочей области я ожидаю найти МОЙ код и только мой код.
Так что теперь у меня есть свои собственные репо в ~/repos/go
и оставил мой GOPATH
быть по умолчанию ~/go
, Это работает отлично. Все библиотеки, в которые я импортирую, живут ~/go
, который держит мое собственное рабочее место ~/repos/go
красиво и чисто. Это прекрасно работает для меня, поэтому я не уверен, почему это не рекомендуемый способ работы.
Я что-то пропустил? Есть вещи, которые я ломаю или функциональные возможности не работают таким образом?
Все советы приветствуются!
[EDIT] Чтобы объяснить, почему мой вопрос отличается от этого вопроса: я знаю, что GOPATH
делает (определяет место для размещения пакетов при использовании go get и место для импорта пакетов), но я не знал, почему вам нужно иметь общедоступный код в том же месте, что и ваш собственный код. Оказывается, в этом нет необходимости, как объяснил @peterSO в (превосходном) ответе, который я принял ниже.
2 ответа
go help gopath
Go ищет каждый каталог, указанный в GOPATH, чтобы найти исходный код, но новые пакеты всегда загружаются в первый каталог в списке.
$GOPATH
это список каталогов. Например, в Linux
export GOPATH=$HOME/gopublic:$HOME/goprivate
go get
помещает все загрузки в первый каталог в списке: $HOME/gopublic
, Поместите все ваши пакеты во второй каталог в списке: $HOME/goprivate
,
GOPATH
является каталогом по умолчанию, на который смотрит цепочка инструментов golang, когда вы пытаетесь скомпилировать код. Технически не нужно на 100% устанавливать пользовательский, так как, если я правильно помню, по умолчанию ~/go/
,
Как сказал выше peterSO, GOPATH
список и помещает пакеты в первую запись