Tutorial
Установка Go и настройка локальной среды программирования в Ubuntu 18.04
Введение
Go — это язык программирования, созданный Google в результате разочарования в других языках. Разработчикам постоянно приходилось выбирать между эффективным языком программирования с очень длительным временем компиляции и удобным языком программирования, не отличающимся эффективностью в производственной среде. Язык Go был разработан, чтобы одновременно обеспечить все три преимущества: высокую скорость компиляции, удобство программирования и эффективное исполнение в производственной среде.
Go — это универсальный язык программирования, который можно использовать для самых разнообразных проектов. Он особенно хорошо подходит для сетевых программ и распределенных систем и заработал себе репутацию «языка облака». Он дает современным программистам больше возможностей благодаря мощному набору инструментов, позволяет устранить разногласия по поводу форматирования, делая формат частью спецификации языка, а также упрощает развертывание за счет компиляции в единый двоичный файл. Язык Go очень прост в изучении и имеет небольшой набор ключевых слов, что делает его идеальным вариантом как для начинающих, так и для опытных программистов.
В этом руководстве вы научитесь устанавливать и настраивать рабочее пространство программирования Go с помощью командной строки. В этом руководстве описывается процедура установки в Ubuntu 18.04, однако общие принципы могут применяться и для других дистрибутивов Debian Linux.
Предварительные требования
Вам потребуется компьютер или виртуальная машина с установленной операционной системой Ubuntu 18.04, а также административный доступ к этой машине и подключение к Интернету. Вы можете загрузить эту операционную систему через страницу релизов Ubuntu 18.04.
Шаг 1 — Установка Go
На этом шаге вы выполните установку Go посредством загрузки текущего выпуска с официальной страницы загрузки Go.
Для этого нужно найти URL для текущего файла тар-архива двоичного релиза. Также вам может понадобиться записать хэш SHA256, поскольку вы будете использовать его для проверки загруженного файла.
Основную часть установки и настройки вы будете выполнять через командную строку — текстовый интерфейс взаимодействия с компьютером. Вместо нажатия на кнопки вы вводите текст и получаете от компьютера обратную связь в текстовом формате.
Командная строка, также называемая оболочка или терминал, помогает изменять и автоматизировать многие повседневные задачи, выполняемые на компьютерах каждый день. Это необходимый и очень важный инструмент для разработчиков программного обеспечения. Существует много других разнообразных команд терминала, с помощью которых вы можете выполнять множество различных задач. Дополнительную информацию об интерфейсе командной строки можно найти в руководстве Введение в терминал Linux.
В Ubuntu 18.04 вы можете найти приложение терминала, нажав значок Ubuntu в верхнем левом углу экрана и введя terminal
в панель поиска. Нажмите на значок приложения терминала, чтобы открыть его. Также вы можете нажать клавиши CTRL
, ALT
и T
на клавиатуре, чтобы открыть приложение терминала автоматически.
После открытия терминала двоичные файлы Go нужно установить вручную. Вы можете использовать диспетчер пакетов, например apt-get
, но ручная установка поможет понять, какие изменения нужно внести в конфигурацию системы для создания действующего рабочего пространства Go.
Прежде чем загружать Go, необходимо перейти в домашнюю директорию (~
):
- cd ~
Используйте команду curl
для получения URL тар-архива файла, скопированного с официальной страницы загрузки Go:
- curl -O https://dl.google.com/go/go1.12.1.linux-amd64.tar.gz
Используйте sha256sum
для проверки тар-архива файла:
- sha256sum go1.12.1.linux-amd64.tar.gz
Отображаемая при выполнении этой команды хэш-сумма должна соответствовать указанной на странице загрузок. Несоответствие означает, что файл неверный и что его нужно загрузить снова.
Output2a3fdabf665496a0db5f41ec6af7a9b15a49fbe71a85a50ca38b1f13a103aeec go1.12.1.linux-amd64.tar.gz
Извлеките загруженный архив и установите его в желаемую часть системы. Лучше всего хранить его в директории /usr/local
:
- sudo tar -xvf go1.12.1.linux-amd64.tar.gz -C /usr/local
Теперь директория go
должна располагаться внутри директории /usr/local
. Рекурсивно измените владельца и группу этой директории на root:
- sudo chown -R root:root /usr/local/go
Так все файлы будут защищены, и только пользователь root сможет запускать двоичные файлы Go.
Примечание. Хотя /usr/local/go
— официально рекомендованная директория, некоторым пользователям может потребоваться использовать другой путь.
На этом шаге вы загрузили и установили Go на компьютер под управлением Ubuntu 18.04. На следующем шаге вы выполните настройку рабочего пространства Go.
Шаг 2 — Создание рабочего пространства Go
После установки Go вы можете создать рабочее пространство для программирования. На корневом уровне рабочего пространства Go имеются две директории:
src
: это директория с исходными файлами Go. Исходный файл или файл исходного кода — это файл, который вы пишете на языке программирования Go. Компилятор Go использует исходные файлы для создания исполняемого двоичного файла.bin
: директория, содержащая исполняемые файлы, которые были созданы и установлены инструментами Go. Исполняемые файлы — это двоичные файлы, которые запускаются в системе и выполняют задачи. Обычно это программы, скомпилированные из вашего исходного кода или из другого загруженного исходного кода Go.
Субдиректория src
может содержать несколько репозиториев контроля версий (например, Git, Mercurial и Bazaar). Это обеспечивает канонический импорт кода в ваш проект. Канонический импорт — это операция импорта, которая ссылается на полностью квалифицированный пакет, например github.com/digitalocean/godo
.
При импорте сторонних двоичных файлов вашей программой вы увидите директорию github.com
, golang.org
или другую директорию, откуда ваша программа импортирует сторонние библиотеки. Если вы используете репозиторий кода, например github.com
, вы также помещаете в эту директорию свои проекты и файлы исходного кода. Мы изучим эту концепцию на следующем шаге.
Вот так выглядит типичное рабочее пространство:
.
├── bin
│ ├── buffalo # command executable
│ ├── dlv # command executable
│ └── packr # command executable
└── src
└── github.com
└── digitalocean
└── godo
├── .git # Git repository metadata
├── account.go # package source
├── account_test.go # test source
├── ...
├── timestamp.go
├── timestamp_test.go
└── util
├── droplet.go
└── droplet_test.go
Директория по умолчанию рабочего пространства Go в версии 1.8 совпадает с домашней директорией вашего пользователя с субдиректорией go
или имеет адрес $HOME/go
. Если вы используете версию Go ниже 1.8, лучше всего использовать для рабочего пространства адрес $HOME/go
.
Введите следующую команду для создания структуры директорий рабочего пространства Go:
- mkdir -p $HOME/go/{bin,src}
Опция -p
предписывает команде mkdir
создать в директории все родительские элементы
, даже если их еще не существует. При использовании параметров {bin,src}
для команды mkdir
создается набор аргументов, предписывающий ей создать директорию bin
и директорию src
.
Таким образом, обеспечивается размещение следующей структуры директорий:
└── $HOME
└── go
├── bin
└── src
До выпуска версии Go 1.8 обязательно было создавать локальную переменную среды с именем $GOPATH
. $GOPATH
указывает компилятору, где находится импортированный сторонний исходный код, а также написанный вами локальный исходный код. Хотя это больше явно не требуется, создать такую переменную все равно полезно, поскольку многие сторонние инструменты зависят от ее использования.
Вы можете задать $GOPATH
, добавив глобальные переменные в ваш ~/.profile
. Также вы можете добавить ее в файл .zshrc
или .bashrc
в соответствии с конфигурацией оболочки.
Откройте файл ~/.profile
с помощью nano
или другого предпочитаемого текстового редактора:
- nano ~/.profile
Чтобы задать переменную $GOPATH
, добавьте в файл следующую строку:
export GOPATH=$HOME/go
При компиляции и установке инструментов Go помещает их в директорию $GOPATH/bin
. Для удобства субдиректория /bin
рабочего пространства обычно добавляется в переменную PATH
в файле ~/.profile
:
export PATH=$PATH:$GOPATH/bin
Это позволит запускать любые компилируемые или загружаемые программы через инструменты Go в любом месте в вашей системе.
Наконец, вам нужно добавить двоичный файл go
в PATH
. Для этого добавьте /usr/local/go/bin
в конец строки:
export PATH=$PATH:$GOPATH/bin:/usr/local/go/bin
Добавление /usr/local/go/bin
в переменную $PATH
делает все инструменты Go доступными в любом месте в вашей системе.
Чтобы обновить оболочку, запустите следующую команду для загрузки глобальных переменных:
- . ~/.profile
Вы можете проверить обновление переменной $PATH
, запустив команду echo
и просмотрев результаты:
- echo $PATH
Вы увидите директорию $GOPATH/bin
в своей домашней директории. Если вы вошли в систему с именем пользователя root
, вы увидите /root/go/bin
в составе пути.
Output/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/root/go/bin:/usr/local/go/bin
Также вы увидите путь к инструментам Go для /usr/local/go/bin
:
Output/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/root/go/bin:/usr/local/go/bin
Для проверки установки проверьте текущую версию Go:
- go version
Результат должен выглядеть следующим образом:
Outputgo version go1.12.1 linux/amd64
Вы создали корневую директорию рабочего пространства и задали переменную среды $GOPATH
. Теперь вы сможете создавать будущие проекты со следующей структурой директорий. В этом примере предполагается, что вы используете github.com
в качестве репозитория:
$GOPATH/src/github.com/username/project
Например, если вы работаете над проектом https://github.com/digitalocean/godo
, он будет сохранен в следующей директории:
$GOPATH/src/github.com/digitalocean/godo
При такой структуре проекты доступны с помощью инструмента go get
. Также она делает проекты удобнее для чтения. Для проверки вы можете использовать команду go get
для доставки библиотеки godo
:
- go get github.com/digitalocean/godo
При этом будет загружено содержимое библиотеки godo
, и на компьютере будет создана директория $GOPATH/src/github.com/digitalocean/godo
.
Можно проверить успешную загрузку пакета godo
посредством вывода директории:
- ll $GOPATH/src/github.com/digitalocean/godo
Результат должен выглядеть примерно следующим образом:
Outputdrwxr-xr-x 4 root root 4096 Apr 5 00:43 ./
drwxr-xr-x 3 root root 4096 Apr 5 00:43 ../
drwxr-xr-x 8 root root 4096 Apr 5 00:43 .git/
-rwxr-xr-x 1 root root 8 Apr 5 00:43 .gitignore*
-rw-r--r-- 1 root root 61 Apr 5 00:43 .travis.yml
-rw-r--r-- 1 root root 2808 Apr 5 00:43 CHANGELOG.md
-rw-r--r-- 1 root root 1851 Apr 5 00:43 CONTRIBUTING.md
.
.
.
-rw-r--r-- 1 root root 4893 Apr 5 00:43 vpcs.go
-rw-r--r-- 1 root root 4091 Apr 5 00:43 vpcs_test.go
На этом шаге вы создали рабочее пространство Go и настроили необходимые переменные среды. На следующем шаге мы протестируем рабочее пространство, запустив в нем код.
Шаг 3 — Создание простой программы
Мы настроили рабочее пространство Go и теперь можем создать программу “Hello, World!” Так вы убедитесь, что ваше рабочее пространство настроено правильно, и сможете лучше познакомиться с Go. Поскольку мы создаем один исходный файл Go, а не фактический проект, нам не нужно находиться в рабочем пространстве.
Откройте в домашней директории редактор nano
или другой текстовый редактор командной строки, и создайте новый файл:
- nano hello.go
Запишите свою программу в новый файл:
package main
import "fmt"
func main() {
fmt.Println("Hello, World!")
}
Этот код использует пакет fmt
и вызывает функцию Println
с Hello, World!
в качестве аргумента. В результате фраза Hello, World!
распечатывается на терминале при запуске программы.
Закройте nano
с помощью клавиш CTRL
и X
. Когда вам будет предложено сохранить файл, нажмите Y
и затем ENTER
.
После выхода из nano
и возврата в оболочку запустите программу:
go run hello.go
Программа hello.go
выведет на терминал следующий результат:
OutputHello, World!
На этом шаге вы использовали простую программу для подтверждения правильности настройки рабочего пространства Go.
Заключение
Поздравляем! Вы настроили рабочее пространство программирования Go на своем локальном компьютере Ubuntu и теперь можете начинать проект по программированию.