Go — это язык программирования, созданный Google в результате разочарования в других языках. Разработчикам постоянно приходилось выбирать между эффективным языком программирования с очень длительным временем компиляции и удобным языком программирования, не отличающимся эффективностью в производственной среде. Язык Go был разработан, чтобы одновременно обеспечить все три преимущества: высокую скорость компиляции, удобство программирования и эффективное исполнение в производственной среде.
Go — это универсальный язык программирования, который можно использовать для различных проектов программирования. Он особенно хорошо подходит для сетевых программ/распределенных систем и заработал себе репутацию «языка облака». Он дает современным программистам больше возможностей благодаря мощному набору инструментов, позволяет устранить разногласия по поводу форматирования, делая формат частью спецификации языка, а также упрощает развертывание за счет компиляции в единый двоичный файл. Язык Go очень простой в обучении и имеет небольшой набор ключевых слов, что делает его идеальным вариантом как для начинающих, так и для опытных программистов.
В этом руководстве вы научитесь устанавливать Go на локальном компьютере macOS и настраивать среду программирования через командную строку.
Шаг 1 — Открытие терминала
Основную часть установки и настройки мы будем выполнять через командную строку — текстовый интерфейс взаимодействия с компьютером. Вместо нажатия на кнопки вы вводите текст и получаете от компьютера обратную связь в текстовом формате. Командная строка, также называемая «оболочка», помогает изменять и автоматизировать многие повседневные задачи, выполняемые на компьютерах. Это необходимый и очень важный инструмент для разработчиков программного обеспечения.
Терминал macOS — это приложение, которое вы можете использовать для доступа к интерфейсу командной строки. Вы можете найти его в Finder, как и любое другое приложение. Для этого перейдите в папку «Приложения», а затем в папку «Утилиты». В этой папке дважды нажмите на приложение Terminal, чтобы открыть его как любое другое приложение. Также вы можете использовать поиск Spotlight, удерживая клавиши CMD
и ПРОБЕЛ
и вводя Terminal в появляющемся поле.
Вы открыли терминал и теперь вы можете загрузить и установить пакет инструментов для разработчиков Xcode, который вам потребуется для установки Go.
Шаг 2 — Установка Xcode
Xcode — это интегрированная среда разработки (IDE), состоящая из различных инструментов разработки программного обеспечения для macOS. Вы можете проверить установку Xcode, введя в окне терминала следующую команду:
$ xcode-select -p
Следующие результаты означают, что среда разработки Xcode установлена:
Output
/Library/Developer/CommandLineTools
Если вы получили сообщение об ошибке, выполните установку Xcode через App Store в браузере, используя параметры по умолчанию.
После установки Xcode вернитесь в окно терминала. Теперь вам нужно установить отдельное приложение Command Line Tools Xcode с инструментами командной строки. Для этого введите следующую команду:
$ xcode-select --install
Теперь вы установили Xcode и приложение Command Line Tools, и мы готовы к установке диспетчера пакетов Homebrew.
Шаг 3 — Установка и настройка Homebrew
Хотя терминал macOS обладает многими функциями, совпадающими с функциями терминалов Linux и других систем Unix, в нем отсутствует встроенный диспетчер пакетов, основанный на передовом опыте. Диспетчер пакетов — это набор программных инструментов для автоматизации процессов установки, в число которых входят начальная установка программного обеспечения, обновление и настройка программного обеспечения, а также удаление программного обеспечения в случае необходимости. Диспетчер пакетов обеспечивает централизованное хранение установочных файлов и может обслуживать все программные пакеты в системе в распространенных форматах. Homebrew — это бесплатная система управления пакетами с открытым исходным кодом для macOS, упрощающая установку программного обеспечения в macOS.
Для установки Homebrew введите в окно терминала следующее:
$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
Диспетчер Homebrew создан на языке Ruby и поэтому он изменит путь Ruby на вашем компьютере. Команда curl
извлекает скрипт из заданного URL. Этот скрипт объясняет, какие операции будут выполнены, а затем приостанавливает процесс в ожидании вашего подтверждения. Так вы получаете большой объем обратной связи по работе скрипта в вашей системе, а также возможность проверить выполнение процесса.
Если вам потребуется ввести пароль, учтите, что нажимаемые клавиши не отображаются в окне терминала, но их ввод регистрируется. Просто нажмите клавишу Return
после завершения ввода пароля. В противном случае нажмите клавишу y
(«Да»), чтобы подтвердить установку.
Просмотрим флаги, связанные с командой curl
:
- Флаг
-f
или--fail
предписывает окну терминала не выводить документы HTML при ошибках сервера. - Флаг
-s
или--silent
заглушает выводcurl
так, что команда не отображает счетчик выполнения. В сочетании с флагом-S
или--show-error
этот флаг гарантирует вывод командойcurl
сообщения об ошибке в случае сбоя. - Флаг
-L
или--location
предписывает командеcurl
повторить запрос в новое место, если сервер сообщает, что запрошенная страница перемещена в другое место.
После завершения процесса установки мы поместим директорию Homebrew на верхний уровень переменной среды PATH
. Благодаря этому установка Homebrew будет вызываться для инструментов, которые macOS может автоматически выбирать и которые могут запускаться против создаваемой нами среды разработки.
Вам следует создать или открыть файл ~/.bash_profile
с помощью текстового редактора командной строки nano, используя команду nano
:
$ nano ~/.bash_profile
Когда файл откроется в окне терминала, введите следующую команду:
export PATH=/usr/local/bin:$PATH
Для сохранения изменений нажмите клавишу CTRL
и букву o
, а затем нажмите клавишу RETURN
, когда система предложит вам сделать это. Теперь вы можете выйти из nano, нажав клавишу CTRL
и букву x
.
Для активации этих изменений выполните в терминале следующую команду:
$ source ~/.bash_profile
После этого внесенные вами изменения переменной среды PATH
вступят в силу.
Вы можете убедиться в успешной установке Homebrew с помощью следующей команды:
$ brew doctor
Если никакие обновления не требуются, на экране терминала появится следующее:
Output
Your system is ready to brew.
В ином случае может быть выведено предупреждение о необходимости запуска другой команды, например brew update
для проверки актуальности установленной версии Homebrew.
После завершения установки Homebrew вы можете переходить к установке Go.
Шаг 4 — Установка Go
Вы можете использовать Homebrew для поиска всех доступных пакетов с помощью команды brew search
. В этом руководстве мы будем искать пакеты или модули, связанные с Go:
$ brew search golang
Примечание. В этом руководстве не используется команда brew search go
, поскольку она возвращает слишком много результатов. Поскольку go
— очень короткое слово, и ему может соответствовать много пакетов, в качестве поискового запроса обычно используют golang
. Эта практика также обычно применяется при поиске статей по Go в Интернете. Термин Golang происходит от названия домена Go, а именно golang.org
.
Терминал выведет список модулей, которые вы можете установить:
Output
golang golang-migrate
В этом списке будет и Go. Переходите к установке:
$ brew install golang
В окне терминала будет отображаться информация по процессу установки Go. Установка может занять несколько минут.
Чтобы проверить, какую версию Go вы установили, введите следующую команду:
$ go version
Эта команда выводит номер установленной версии Go. По умолчанию устанавливается самая последняя стабильная версия Go.
В будущем для обновления Go вы можете использовать следующие команды, которые сначала обновляют Homebrew, а затем — Go. Сейчас это не требуется, поскольку вы только что установили последнюю версию:
$ brew update
$ brew upgrade golang
brew update
обновляет версию Homebrew, благодаря чему у вас будет самая актуальная информация о пакетах, которые вы хотите установить. Команда brew upgrade golang
обновит пакет golang
до последней доступной версии.
Рекомендуется регулярно проверять актуальность установленной версии Go.
Теперь вы установили Go на своем компьютере и можете перейти к созданию рабочего пространства для ваших проектов Go.
Шаг 5 — Создание рабочего пространства Go
Вы установили Xcode, Homebrew и Go и теперь можете переходить к созданию рабочего пространства для программирования.
На корневом уровне рабочего пространства Go имеются две директории:
src
: это директория с исходными файлами Go. Исходный файл или файл исходного кода — это файл, который вы пишете на языке программирования Go. Компилятор Go использует исходные файлы для создания исполняемого двоичного файла.bin
: директория, содержащая исполняемые файлы, которые были созданы и установлены инструментами Go. Исполняемые файлы — это двоичные файлы, которые запускаются в системе и выполняют задачи. Обычно это программы, скомпилированные из вашего исходного кода или из другого загруженного исходного кода Go.
Субдиректория src
может содержать несколько репозиториев контроля версий (например, Git, Mercurial и Bazaar). При импорте сторонних двоичных файлов вашей программой вы увидите такие директории, как github.com
или golang.org
. Если вы используете репозиторий кода, например github.com
, вы также помещаете в эту директорию свои проекты и файлы исходного кода. Это обеспечивает канонический импорт кода в ваш проект. Канонический импорт — это операция импорта, которая ссылается на полностью квалифицированный пакет, например github.com/digitalocean/godo
.
Вот так выглядит типичное рабочее пространство:
.
├── bin
│ ├── buffalo # command executable
│ ├── dlv # command executable
│ └── packr # command executable
└── src
└── github.com
└── digitalocean
└── godo
├── .git # Git reposistory 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
посредством ее добавления в файл ~/.bash_profile
.
Откройте файл ~/.bash_profile
с помощью nano
или другого предпочитаемого текстового редактора:
$ nano ~/.bash_profile
Чтобы задать переменную $GOPATH
, добавьте в файл следующую строку:
~/.bash_profile
export GOPATH=$HOME/go
При компиляции и установке инструментов Go помещает их в директорию $GOPATH/bin
. Для удобства субдиретория /bin
рабочего пространства обычно добавляется в переменную PATH
в файле ~/.bash_profile
:
~/.bash_profile
export PATH=$PATH:$GOPATH/bin
Теперь в файле ~/.bash_profile
должны быть следующие записи:
~/.bash_profile
export GOPATH=$HOME/go
export PATH=$PATH:$GOPATH/bin
Это позволит вам запускать любые компилируемые или загружаемые программы через инструменты Go в любом месте в вашей системе.
Для обновления оболочки используйте следующую команду для загрузки созданных глобальных переменных:
$ . ~/.bash_profile
Вы можете проверить обновление переменной $PATH
, запустив команду echo
и просмотрев результаты:
$ echo $PATH
Вы должны увидеть директорию $GOPATH/bin
в своей домашней директории. Если вы вошли в систему под именем пользователя sammy
, вы увидите путь /Users/sammy/go/bin
.
Output
/Users/sammy/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
Copy
Вы создали корневую директорию рабочего пространства и задали переменную среды $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
посредством вывода директории:
$ ls -l $GOPATH/src/github.com/digitalocean/godo
Результат должен выглядеть примерно так:
Output
-rw-r--r-- 1 sammy staff 2892 Apr 5 15:56 CHANGELOG.md
-rw-r--r-- 1 sammy staff 1851 Apr 5 15:56 CONTRIBUTING.md
.
.
.
-rw-r--r-- 1 sammy staff 4893 Apr 5 15:56 vpcs.go
-rw-r--r-- 1 sammy staff 4091 Apr 5 15:56 vpcs_test.go
На этом шаге вы создали рабочее пространство Go и настроили необходимые переменные среды. На следующем шаге мы протестируем рабочее пространство, запустив в нем код.
Шаг 6 — Создание простой программы
Вы настроили рабочее пространство Go и теперь можете создать простую программу “Hello, World!” Так вы убедитесь, что ваше рабочее пространство работает, и сможете лучше познакомиться с Go.
Поскольку вы создаете один исходный файл Go, а не фактический проект, вам не нужно находиться в рабочем пространстве.
Откройте в домашней директории редактор nano
или другой текстовый редактор командной строки и создайте новый файл:
$ nano hello.go
Когда текстовый файл откроется в терминале, введите код программы:
package main
import "fmt"
func main() {
fmt.Println("Hello, World!")
}
Для выхода из nano нажмите клавиши control
и х
, а когда система предложит вам сохранить файл, нажмите клавишу y
.
Этот код использует пакет fmt
и вызывает функцию Println
с Hello, World!
в качестве аргумента. В результате фраза Hello, World!
распечатывается на терминале при запуске программы.
После выхода из nano
и возврата в оболочку запустите программу:
$ go run hello.go
Созданная программа hello.go
выведет на терминале следующее:
Output
Hello, World!
На этом шаге вы использовали простую программу для подтверждения правильности настройки рабочего пространства Go.