go help gopath
Путь Go (Go path) используется для разрешения операторов импорта. Он реализован и задокументирован в пакете go/build.
Переменная окружения GOPATH перечисляет места для поиска кода Go. В Unix значение представляет собой строку, разделенную двоеточиями. В Windows значение представляет собой строку, разделенную точкой с запятой.
Если переменная среды не установлена, GOPATH по умолчанию использует подкаталог с именем "go" в домашнем каталоге пользователя ($HOME/go в Unix, %USERPROFILE%\go в Windows), если только этот каталог не содержит дистрибутив Go. Запустите "go env GOPATH", чтобы увидеть текущую GOPATH.
Смотрите этот пост, чтобы установить пользовательскую GOPATH.
Каждый каталог, указанный в GOPATH, должен иметь предписанную структуру:
Каталог src содержит исходный код. Путь ниже src определяет путь импорта или имя исполняемого файла.
В каталоге pkg хранятся установленные объекты пакета. Как и в дереве Go, каждая целевая пара операционной системы и архитектуры имеет свой собственный подкаталог pkg (pkg/GOOS_GOARCH).
Если DIR является каталогом, указанным в GOPATH, пакет с источником в DIR/src/foo/bar можно импортировать как "foo/bar", а его скомпилированная форма установлена в "DIR/pkg/GOOS_GOARCH/foo/bar.a".
Каталог bin содержит скомпилированные команды. Каждая команда названа для своего исходного каталога, но только конечный элемент, а не весь путь. То есть команда с источником в DIR/src/foo/quux устанавливается в DIR/bin/quux, а не в DIR/bin/foo/quux. Префикс "foo/" удален, так что вы можете добавить DIR/bin в PATH, чтобы получить доступ к установленным командам. Если установлена переменная среды GOBIN, команды устанавливаются в каталог, который она называет, а не в DIR/bin. GOBIN должен быть абсолютным путем.
Вот пример макета каталога:
GOPATH=/home/user/go
/home/user/go/
src/
foo/
bar/ (go код в пакете bar)
x.go
quux/ (go код в пакете main)
y.go
bin/
quux (установленная команда)
pkg/
linux_amd64/
foo/
bar.a (установленный объект пакета)
Go ищет каждый каталог, указанный в GOPATH, чтобы найти исходный код, но новые пакеты всегда загружаются в первый каталог в списке.
См. этот пост для примера.
Читайте также:
Комментариев нет:
Отправить комментарий