В чем причина установки GOPATH на мое рабочее пространство? - PullRequest
0 голосов
/ 01 февраля 2019

Я везде читал, что мой GOPATH должен быть установлен в моем рабочем пространстве.Если я сделаю это и использую go get для получения пакетов, например, от github, они все будут добавлены в мое рабочее пространство, что я не нахожу особенно полезным, поскольку оно загромождает мое рабочее пространство.В моей рабочей области я ожидаю найти МОЙ код и только мой код.

Так что теперь у меня есть свои собственные репозитории в ~/repos/go и я оставил GOPATH по умолчанию ~/go.Это работает отлично.Все библиотеки, которые я импортирую, живут в ~/go, что делает мое рабочее место ~/repos/go красивым и чистым.Это прекрасно работает для меня, поэтому я не уверен, почему это не рекомендуемый способ работы.

Я что-то упустил?Есть что-то, что я нарушаю или функциональные возможности не работают таким образом?

Все советы приветствуются!

[ПРАВИТЬ] Чтобы объяснить, почему мой вопрос отличается от этот вопрос : Я знаю, что делает GOPATH (определить место для размещения пакетов при использовании go get и место для импорта пакетов), но я не знал, почему вам нужно иметь открытый код в том же месте, что и ваш собственный код.Оказывается, в этом нет необходимости, как объяснил @peterSO в (превосходном) ответе, который я принял ниже.

Ответы [ 2 ]

0 голосов
/ 01 февраля 2019

GOPATH - это каталог по умолчанию, на который смотрит цепочка инструментов golang, когда вы пытаетесь скомпилировать код.Не технически 100% необходимо установить пользовательский, так как, если я правильно помню, по умолчанию он равен ~/go/.

Как сказал выше peterSO, GOPATH представляет собой список и помещаетпакеты в первую запись.

0 голосов
/ 01 февраля 2019

go help gopath

Go ищет каждый каталог, указанный в GOPATH, чтобы найти исходный код, но новые пакеты всегда загружаются в первый каталог в списке.


$GOPATH это список каталогов.Например, в Linux

export GOPATH=$HOME/gopublic:$HOME/goprivate

go get помещает все загрузки в первый каталог в списке: $HOME/gopublic.Поместите все ваши пакеты во второй каталог в списке: $HOME/goprivate.

...