Из этой статьи вы узнаете о GOPATH, принципах работы и настройке GOPATH
. Это важный шаг для настройки среды разработки Go и понимания процесса поиска, установки и сборки исходных файлов Go. В этой статье мы будем использовать термин GOPATH
для описания обсуждаемой концепции структуры папок. Термин $GOPATH
будет означать переменную среды, используемую Go для поиска структуры папок.
Рабочее пространство Go используется Go для управления исходными файлами, скомпилированными двоичными файлами и кэшированными объектами, используемыми впоследствии для ускорения компиляции. Обычно рекомендуется использовать только одно рабочее пространство Go, хотя их может быть и несколько. GOPATH
выступает в качестве корневой папки рабочего пространства.
$GOPATH
Переменная среды $GOPATH
перечисляет места, где Go ищет рабочие пространства Go.
По умолчанию Go использует в качестве GOPATH
расположение $HOME/go
, где $HOME
— корневой каталог учетной записи пользователя нашего компьютера. Для изменения этой настройки следует изменить переменную среды $GOPATH
. Дополнительную информацию можно найти в обучающем модуле по чтению и настройке переменных среды в Linux.
Дополнительную информацию по настройке переменной $GOPATH
можно найти в документации по Go.
Кроме того, из этой серии вы можете подробно узнать об установке Go и настройке среды разработки Go.
$GOPATH
— это не $GOROOT
Переменная $GOROOT
определяет расположение кода Go, компилятора и инструментов, а не нашего исходного кода. Переменная $GOROOT
обычно имеет значение вида /usr/local/go
. Переменная $GOPATH
обычно имеет значение вида $HOME/go
.
Хотя явно задавать переменную $GOROOT
больше не нужно, она все еще упоминается в старых материалах.
Теперь поговорим о структуре рабочего пространства Go.
Внутри рабочего пространства Go или GOPATH
содержится три каталога: bin
, pkg
и src
. Каждый из этих каталогов имеет особое значение для цепочки инструментов Go.
.
├── bin
├── pkg
└── src
└── github.com/foo/bar
└── bar.go
Давайте посмотрим на каждый из этих каталогов.
Каталог $GOPATH/bin
— это место, где Go размещает двоичные файлы, компилируемые go install
. Операционная система использует переменную среды $PATH
для поиска двоичных приложений, которые могут выполняться без полного пути. Рекомендуется добавить этот каталог в глобальную переменную $PATH
.
Например, если мы не добавим $GOPATH/bin
в $PATH
для выполнения программы, нам нужно будет выполнять запуск следующим образом:
- $GOPATH/bin/myapp
При добавлении $GOPATH/bin
в $PATH
мы можем вызвать программу примерно так:
- myapp
Каталог $GOPATH/pkg
используется Go для хранения предварительно скомпилированных объектных файлов для ускорения последующей компиляции программ. Большинству разработчиков этот каталог не потребуется. Если у вас возникнут проблемы при компиляции, вы можете спокойно удалить этот каталог, и Go воссоздаст его.
В каталоге src
должны находиться все наши файлы .go
или исходный код. Их не следует путать с исходным кодом, который используют инструменты Go, и который находится в каталоге $GOROOT
. При написании приложений, пакетов и библиотек Go мы помещаем эти файлы в каталог $GOPATH/src/path/to/code
.
Код Go организован в виде пакетов. Пакет представляет собой все файлы в одном каталоге на диске. Один каталог может содержать только определенные файлы из этого же пакета. Пакеты хранятся вместе со всеми созданными пользователем исходными файлами Go в каталоге $GOPATH/src
. Импорт разных пакетов поможет легко понять принципы обработки пакетов.
Если наш код находится в каталоге $GOPATH/src/blue/red
, его имя пакета будет red
.
Выражение импорта пакета red
будет выглядеть следующим образом:
import "blue/red"
Пакеты, находящиеся в репозиториях исходного кода, таких как GitHub и BitBucket, содержат полный адрес репозитория как часть пути импорта.
Например, мы можем импортировать исходный код по адресу https://github.com/gobuffalo/buffalo, используя следующий путь импорта:
import "github.com/gobuffalo/buffalo"
Поэтому исходный код будет располагаться в следующем каталоге на диске:
$GOPATH/src/github.com/gobuffalo/buffalo
В этой статье мы рассказали о GOPATH
как о наборе папок, где Go ожидает видеть наш исходный код, описали эти папки и рассказали об их содержимом. Также мы показали, как можно сменить расположение по умолчанию $HOME/go
на выбранное пользователем расположение посредством настройки переменной среды $GOPATH
. В заключение мы показали, как Go ищет пакеты в структуре папок.
В версии Go 1.11 были введены модули Go, призванные заменить рабочие пространства Go и GOPATH
. Хотя мы рекомендуем начать использовать модули, некоторые среды, в том числе среды корпоративных сетей, могут быть еще не готовы к использованию модулей.
GOPATH
— один из сложных аспектов настройки Go, однако после завершения настройки о нем можно забыть.
Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.
This textbox defaults to using Markdown to format your answer.
You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!