Установка Go и настройка локальной среды разработки в Ubuntu 18.04

Go – это язык программирования, который появился благодаря долгим поискам команды Google. Разработчикам постоянно приходилось идти на компромисс: либо ты выбираешь эффективный язык программирования, который долго компилируется, либо выбираешь язык, который компилируется быстрее, но совершенно неэффективен в производстве. При разработке Go учитывались три главных аспекта: быстрая компиляция, простота программирования и эффективное выполнение в производстве.

Go – это универсальный язык программирования, который можно использовать для многих различных программных проектов, но особенно хорошо он подходит для сетевых программ и распределенных систем, благодаря чему он заслужил репутацию «языка облака». Его цель – помочь современному программисту сделать больше (для этого у него есть мощный набор инструментов), устранить споры о форматировании, сделав формат частью спецификации языка, а также упростить развертывание путем компиляции в один двоичный файл. Go легко изучить, так как он состоит из очень небольшого набора ключевых слов. Это отличный язык как для начинающих, так и для опытных разработчиков.

В этом мануале узнаете, как установить Go на локальный компьютер Ubuntu 18.04 и настроить среду разработки с помощью командной строки.

Требования

Для работы вам нужен локальный компьютер Ubuntu 18.04 с административным доступом, подключенный к Интернету. Загрузить Ubuntu 18.04 можно с этой страницы.

1: Установка Go

Сначала нужно установить Go. Пакет можно загрузить с официального сайта проекта.

Для этого вам нужно найти URL текущего релиза Go, загрузить его, а затем проверить хэш SHA256.

Читайте также: Проверка загруженных файлов

Большая часть действий будет выполняться в командной строке. Командная строка представляет собой неграфический способ взаимодействия с компьютером. Вместо нажатия кнопок с помощью мыши вы вводите команды в виде текста и получаете обратную связь опять же в виде текста.

Командная строка, также известная как оболочка или терминал, позволяет вам автоматизировать многие рутинные задачи и является важным инструментом для разработчиков программного обеспечения.

Читайте также: Основы работы с терминалом Linux

Чтобы найти приложение терминала в Ubuntu 18.04, откройте меню (в левом нижнем углу экрана) и введите terminal в строку поиска. Также можно использовать сочетание клавиш CTRL, ALT и T, чтобы открыть терминал автоматически.

После этого нужно вручную установить двоичные файлы Go. Хотя вы можете использовать менеджер пакетов apt-get, пошаговая установка поможет вам понять, какие изменения конфигурации вашей системы необходимы для создания надежного рабочего пространства Go.

Перед загрузкой Go убедитесь, что вы находитесь в домашнем (~) каталоге:

cd ~

Используйте curl, чтобы загрузить тарбол, адрес которого вы скопировали с официальной страницы загрузок Go:

curl -O https://dl.google.com/go/go1.12.1.linux-amd64.tar.gz

Проверьте контрольную сумму sha256sum  загруженного пакета:

sha256sum go1.12.1.linux-amd64.tar.gz

Хэш, отображаемый вышеуказанной командой, должен совпадать с хэшем, который был на странице загрузок. Если это не так, то во время загрузки файл был изменен или поврежден, и вы должны загрузить его снова.

2a3fdabf665496a0db5f41ec6af7a9b15a49fbe71a85a50ca38b1f13a103aeec  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 рекомендуется использовать официально, но некоторые пользователи в зависимости от ситуации предпочитают другое расположение.

2: Создание рабочего пространства Go

Теперь вы можете приступить к созданию своего рабочего пространства для программирования.

Рабочая среда Go будет содержать в корне два каталога:

  • src: это каталог, содержащий исходные файлы Go. Исходный файл – это файл, который вы пишете на языке программирования Go. Исходные файлы используются компилятором Go для создания исполняемого двоичного файла.
  • bin: каталог, содержащий исполняемые файлы, созданные и установленные инструментами Go. Исполняемые файлы – это двоичные файлы, которые запускаются в системе и выполняют задачи. Обычно это программы, скомпилированные из исходного кода Go.

Подкаталог src может содержать несколько репозиториев контроля версий (таких как GitMercurial или Bazaar). Это позволяет импортировать код в ваш проект. Канонический импорт – это импорт, который ссылается на полностью определенный пакет.

Вы увидите каталоги типа github.com или golang.org, когда ваша программа импортирует сторонние библиотеки. Если вы используете репозиторий кода, например github.com, вы должны поместить свои проекты и исходные файлы в этот каталог.

Вот так выглядит типичное рабочее пространство:

.
├── bin
│   ├── buffalo                                      # command executable
│   ├── dlv                                          # command executable
│   └── packr                                        # command executable
└── src
└── github.com
└── godo
├── .git                            # Git reposistory metadata
├── account.go                      # package source
├── account_test.go                 # test source
├── ...
├── timestamp.go
├── timestamp_test.go
└── util
├── server.go
└── server_test.go

C версии 1.8 каталог по умолчанию для рабочего пространства Go – это домашний каталог вашего пользователя с подкаталогом go или $HOME/go. Если вы используете более раннюю версию Go, рекомендуется все же использовать для вашего рабочего пространства расположение $HOME/go.

Выполните следующую команду, чтобы создать структуру каталогов для вашего рабочего пространства Go:

mkdir -p $HOME/go/{bin,src}

Опция -p создает все родительские каталоги, если они в настоящее время не существуют. {bin, src} создает набор аргументов для команды mkdir и помогает ей создать каталоги bin и src.

В итоге получится такая структура каталогов:

└── $HOME
└── go
├── bin
└── src

До версии 1.8 требовалось устанавливать локальную переменную среды $GOPATH. Явно это больше не требуется, но по-прежнему считается хорошей практикой, поскольку многие сторонние инструменты все еще зависят от этой переменной.

Установить $GOPATH можно в файле ~/.profile.

Откройте этот файл в редакторе:

nano ~/.profile

Установите переменную $GOPATH:

export GOPATH=$HOME/go

Когда Go компилирует и устанавливает инструменты, он помещает их в каталог $GOPATH/bin. Для удобства в файле ~/.profile подкаталог /bin рабочей области добавляют в PATH:

export PATH=$PATH:$GOPATH/bin

Теперь в файле ~/.profile у вас должны быть следующие записи:

export GOPATH=$HOME/go
export PATH=$PATH:$GOPATH/bin

Это позволит вам запускать любые программы, которые вы компилируете или загружаете с помощью инструментов Go, в любой точке вашей системы.

Теперь нужно добавить бинарный файл go в PATH. Поместите /usr/local/go/bin в конец строки:

export PATH=$PATH:$GOPATH/bin:/usr/local/go/bin

Теперь инструменты Go доступны из любой точки системы.

Чтобы обновить оболочку, введите следующую команду:

. ~/.profile

Вы можете убедиться, что $PATH обновилась, используя команду echo:

echo $PATH

Вы должны увидеть $GOPATH/bin, который появится в вашем домашнем каталоге. Если вы вошли в систему как пользователь root, вы увидите путь root/go/bin.

/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:

/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 version

Вы получите:

go version go1.12.1 linux/amd64

Теперь, когда у вас есть базовая рабочая среда и установленная переменная $GOPATH, вы можете создать следующую структуру для разработки проектов (в этом примере предполагается, что вы используете github.com в качестве хранилища):

$GOPATH/src/github.com/username/project

Такое структурирование проектов позволит получать к ним доступ с помощью инструмента go get. Это также нужно для удобочитаемости.

Вы можете проверить, работает ли структура, с помощью команды go get:

go get github.com/username/project

Эта команда загрузит указанный проект и создаст каталог $GOPATH/src/github.com/username/project на вашей машине. Запросив каталог, вы увидите, что пакет был загружен:

ll $GOPATH/src/github.com/username/project
drwxr-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

3: Создание простой программы Go

Теперь у вас есть рабочее пространство Go. Попробуйте создать в нем простую программу «Hello, World!». Так вы сможете убедиться, что среда работает, а заодно и ближе познакомиться с Go.

Поскольку сейчас мы создадим простейший исходный файл Go, а не настоящий проект, входить в рабочее пространство не обязательно.

Перейдите в домашний каталог, откройте текстовый редактор и создайте файл:

nano hello.go

Введите следующий код:

package main
import "fmt"
func main() {
fmt.Println("Hello, World!")
}

Сохраните и закройте файл.

Этот код будет использовать пакет fmt и вызовет функцию Println с аргументом Hello, World!. Это отобразит фразу Hello, World! в терминал при запуске программы.

Когда вы выйдете из nano и вернетесь к своей оболочке, запустите программу:

go run hello.go

Программа hello.go, которую вы только что создали, покажет следующий вывод:

Hello, World!

Вы написали базовую программу, чтобы убедиться, что ваше рабочее пространство Go правильно настроено.

Заключение

Теперь вы можете использовать рабочее пространство Go на локальной машине macOS для создания своих собственных проектов.

Читайте также: Написание комментариев в Go

Tags: ,