Из этой статьи вы узнаете о 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, однако после завершения настройки о нем можно забыть.
Join our DigitalOcean community of over a million developers for free! Get help and share knowledge in our Questions & Answers section, find tutorials and tools that will help you grow as a developer and scale your project or business, and subscribe to topics of interest.
Sign up