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

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

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

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

Требования

Для работы вам нужен локальный компьютер Windows 10 с административным доступом, подключенный к Интернету.

1: Настройка PowerShell

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

PowerShell – это программа от Microsoft, которая предоставляет интерфейс командной строки.

Административные задачи выполняются с помощью командных структур, именуемых cmdlet (произносится как командлет), это специализированные классы .NET, которые могут выполнять операции. В августе 2016 года код PowerShell стал открытым и теперь доступен на разных платформах для систем Windows и UNIX (включая Mac и Linux).

Чтобы найти Windows PowerShell, вы можете кликнуть правой кнопкой мыши значок Start в левом нижнем углу экрана. Когда появится меню, выберите Search, а затем введите PowerShell в строку поиска. Когда вы увидите список опций, щелкните правой кнопкой мыши Windows PowerShell в приложении Desktop. Для данного руководства выберите Run as Administrator. Когда появится диалоговое окно с вопросом «Do you want to allow this app to make changes to your PC?», выберите «Yes».

Как только вы это сделаете, вы увидите текстовый интерфейс.

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

cd ~

Вы попадете в домашний каталог C:\Users\8host.

Чтобы продолжить процесс установки, сначала необходимо настроить привилегии через PowerShell. По умолчанию система работает в наиболее безопасном режиме, есть несколько уровней доступа, которые вы можете настроить от имени администратора:

  • Restricted — это политика выполнения по умолчанию. В этом режиме вы не сможете запускать скрипты, а PowerShell будет работать только как интерактивная оболочка.
  • AllSigned позволяет вам запускать все сценарии и конфигурационные файлы, которые подписаны доверенным издателем (это означает, что вы потенциально можете подтвердить запуск вредоносных сценариев, которые подписаны доверенным издателем).
  • RemoteSigned позволяет вам запускать скрипты и конфигурационные файлы, загруженные из Интернета и подписанные доверенными издателями (что снова подвергает ваш компьютер уязвимостям, если эти доверенные скрипты окажутся вредоносными).
  • Unrestricted запускает все скрипты и конфигурационные файлы, загруженные из Интернета, как только вы подтвердите, что понимаете, что файл был загружен из Интернета. В этом случае цифровая подпись не требуется. Это значит, что вы рискуете запустить неподписанные и потенциально вредоносные сценарии, загруженные из Интернета.

В этом руководстве мы будем использовать политику RemoteSigned для текущего пользователя. Это позволит PowerShell принимать доверенные сценарии и при этом сохранить некоторые границы. Введите в PowerShell следующее:

Set-ExecutionPolicy -Scope CurrentUser

Затем PowerShell предложит вам указать политику выполнения. Введите следующее, чтобы использовать RemoteSigned:

RemoteSigned

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

Get-ExecutionPolicy -List

Вы должны получить вывод, который выглядит примерно так:

Scope ExecutionPolicy
----- ---------------
MachinePolicy       Undefined
UserPolicy       Undefined
Process       Undefined
CurrentUser    RemoteSigned
LocalMachine       Undefined

Это подтверждает, что текущий пользователь может запускать доверенные сценарии, загруженные из Интернета. Теперь вы можете перейти к загрузке файлов, которые понадобятся для настройки пространства Go.

2: Установка пакетного менеджера Chocolatey

Менеджер пакетов – это набор программных инструментов, которые нужны для автоматизации процессов установки (начальной установки, обновления и настройки), а также удаления программного обеспечения. Пакетный менеджер централизованно хранит установки программ и может поддерживать все пакеты в системе в нужных форматах.

Chocolatey – это менеджер пакетов, созданный для Windows, который работает как apt-get в Linux. Он поможет вам быстро установить приложения и инструменты, которые нужны для среды разработки. У Chocolatey есть версия с открытым исходным кодом.

Перед установкой сценария прочитайте его, чтобы убедиться, что он не внесет в систему никаких лишних изменений. Используйте среду сценариев .NET для загрузки и отображения сценария Chocolatey в окне терминала.

Создайте объект WebClient по имени $script, который разделяет настройки интернет-соединения с Internet Explorer:

$script = New-Object Net.WebClient

Посмотрите на доступные опции, соединив объект $script с помощью символа | с класом Get-Member:

$script | Get-Member

Это вернет список свойств и методов этого объекта WebClient:

. . .
DownloadFileAsync         Method     void DownloadFileAsync(uri address, string fileName), void DownloadFileAsync(ur...
DownloadFileTaskAsync     Method     System.Threading.Tasks.Task DownloadFileTaskAsync(string address, string fileNa...
DownloadString            Method     string DownloadString(string address), string DownloadString(uri address) #method we will use
DownloadStringAsync       Method     void DownloadStringAsync(uri address), void DownloadStringAsync(uri address, Sy...
DownloadStringTaskAsync   Method     System.Threading.Tasks.Task[string] DownloadStringTaskAsync(string address), Sy…
. . .

Просматривая выходные данные, вы можете найти метод DownloadString, используемый для отображения скрипта и подписи в окне PowerShell. Используйте этот метод для проверки скрипта:

$script.DownloadString("https://chocolatey.org/install.ps1")

После проверки сценария установите Chocolatey, введя в PowerShell следующую команду:

iwr https://chocolatey.org/install.ps1 -UseBasicParsing | iex

Командлет iwr, или Invoke-WebRequest, позволяет извлекать данные из Интернета. Она передаст сценарий iex или командлет Invoke-Expression, который выполнит сценарий и запустит установку менеджера пакетов Chocolatey.

Разрешите PowerShell установить Chocolatey. Как только менеджер будет установлен, вы сможете установить дополнительные инструменты с помощью команды choco.

Если вам нужно будет обновить Chocolatey, выполните следующую команду:

choco upgrade chocolatey

3: Установка текстового редактора nano (опционально)

Теперь можно установить nano, текстовый редактор, который использует интерфейс командной строки.

Вы можете использовать nano для написания программ непосредственно в PowerShell. Это необязательный этап, так как вы также можете использовать другой текстовый редактор, например блокнот. В этом мануале рекомендуется использовать nano, поскольку это поможет вам быстрее привыкнуть к PowerShell.

Используйте Chocolatey для установки nano:

choco install -y nano

Флаг -y запускает скрипт без запроса подтверждения.

После установки редактора вы можете использовать команду nano для создания новых текстовых файлов. С его помощью вы сможете написать свою первую программу Go.

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

Теперь можно использовать Chocolatey для установки Go:

choco install -y golang

Примечание: Слово «go» короткое, а потому оно совпадает со многими другими пакетами. Сейчас обычно в качестве поискового запроса используют golang (в том числе и при поиске в Интернете статей, связанных с Go). Термин Golang появился благодаря домену Go, golang.org.

Теперь PowerShell установит Go, генерируя во время этого процесса выходные данные. После завершения установки вы должны увидеть следующий вывод:

Environment Vars (like PATH) have changed. Close/reopen your shell to
see the changes (or in powershell/cmd.exe just type `refreshenv`).
The install of golang was successful.
Software installed as 'msi', install location is likely default.
Chocolatey installed 1/1 packages.
See the log for details (C:\ProgramData\chocolatey\logs\chocolatey.log).

После завершения установки нужно убедиться, что Go установлен. Чтобы увидеть изменения, закройте и снова откройте PowerShell как администратор, а затем проверьте версию Go, которая появилась на вашем локальном компьютере:

go version

Вы получите такой вывод:

go version go1.12.1 windows/amd643.7.0

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

5: Создание рабочего пространства 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.

Выполните следующую команду, чтобы перейти в каталог $HOME:

$HOME

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

mkdir go/bin, go/src

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

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

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

Поскольку для установки вы использовали Chocolatey, эта переменная среды уже должна быть установлена. Вы можете проверить это с помощью следующей команды:

$env:GOPATH

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

C:\Users\8host\go

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

setx PATH "$($env:path);$GOPATH\bin"

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

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

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

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

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

go get github.com/username/project

Примечание: Если на вашем компьютере нет git, Windows откроет диалоговое окно и предложит установить его. Нажмите Yes, чтобы продолжить, и следуйте инструкциям.

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

ls $env:GOPATH/src/github.com/digitalocean/godo
Directory: C:\Users\8host\go\src\github.com\username\project
Mode                LastWriteTime         Length Name
----                -------------         ------ ----
d-----        4/10/2019   2:59 PM                util
-a----        4/10/2019   2:59 PM              9 .gitignore
-a----        4/10/2019   2:59 PM             69 .travis.yml
-a----        4/10/2019   2:59 PM           1592 account.go
-a----        4/10/2019   2:59 PM           1679 account_test.go
-rw-r--r--  1 8host  staff   2892 Apr  5 15:56 CHANGELOG.md
-rw-r--r--  1 8host  staff   1851 Apr  5 15:56 CONTRIBUTING.md
.
.
.
-a----        4/10/2019   2:59 PM           5076 vpcs.go
-a----        4/10/2019   2:59 PM           4309 vpcs_test.go

6: Создание простой программы 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 для создания своих собственных проектов.

Читайте также:

Tags: , , ,