Могу ли я иметь несколько каталогов GOPATH?
Я установил свой GOPATH на
/Users/me/dev/go
и я
/Users/me/dev/go/src/client1
/Users/me/dev/go/src/client2
/Users/me/dev/go/src/client3
а также
/Users/me/dev/client1/rails_project
/Users/me/dev/client2/php_project
etc.
Мне не нравится, как в моей корневой папке dev я вынужден иметь этот общий "go" dir, который содержит много разных проектов google.
Ответы
Ответ 1
Да, GOPATH
- список каталогов (например, PATH
). Запустите go help gopath
для получения дополнительной информации. Например, в Linux у меня есть:
$ go env
GOROOT="/home/peter/go"
GOPATH="/home/peter/gopath:/home/peter/public/gopath"
$
У меня что-то подобное в Windows.
Примечание: Linux использует :
в качестве разделителя списков GOPATH
; В качестве разделителя Windows использует ;
.
Если вы используете go get
, по умолчанию будет указан первый каталог в списке.
Запустите go env
, чтобы проверить, что все правильно.
Ответ 2
Да.
Чтобы привести сам себя:
$ go help gopath
Путь Go используется для разрешения операторов импорта. Он реализуется и документируется в пакете go/build.
В переменной среды GOPATH перечислены места для поиска кода Go.
В Unix значение представляет собой строку, разделенную двоеточием.
В Windows значение представляет собой строку с разделителями с запятой.
В Plan 9 значение представляет собой список.
GOPATH должен быть установлен для получения, сборки и установки пакетов за пределами стандартное дерево Go.
Каждый каталог, указанный в GOPATH, должен иметь предписанную структуру:
В каталоге src хранится исходный код. Путь ниже src определяет путь импорта или имя исполняемого файла.
...
Ответ 3
Это сообщение в блоге дает очень приятное объяснение о том, как и почему можно установить несколько значений в GOPATH, особенно когда он говорит:
Мой GOPATH состоит из 3 папок или рабочих областей GOPATH.
Первая из них - это мое рабочее пространство . Поскольку он указан первым, всякий раз, когда я получаю новый пакет, он всегда попадает в это рабочее пространство.
Go выполняет поиск в каждом каталоге, указанном в GOPATH, для поиска исходного кода, но новые пакеты всегда загружаются в первый каталог в списке. Я делаю это правило никогда не делать никаких разработок там, поэтому он всегда полностью безопасен для очистки этой папки, когда она становится слишком большой (с пакетами Go, которые я не использую). В конце концов, у него есть только пакеты Go, которые я могу получить снова с go get.
Моя вторая рабочая область предназначена для всех моих личных пакетов Go и любых других пакетов, которые я могу захотеть "любить" или сделать некоторые разработки. Я перемещаю вещи, которые я использую регулярно из первой рабочей области во вторую.
Моя третье рабочее пространство посвящено частным пакетам Go из моей работы и их зависимостям. Удобно, чтобы мои рабочие пакеты были отделены от всех моих личных вещей, поэтому они не попадают друг в друга.