Golang
November 24, 2022

Установка Go и настройка локальной среды программирования в Windows 10

Введение

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

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

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

Предварительные требования

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

Шаг 1 — Открытие и настройка PowerShell

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

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

Чтобы найти Windows PowerShell, щелкните правой кнопкой мыши значок меню Пуск в левом нижнем углу экрана вашего компьютера. Когда появится меню, нажмите Search (Найти) и введите PowerShell в панель поиска. В списке вариантов щелкните правой кнопкой мыши приложение Windows PowerShell. Для целей настоящего обучающего руководства нажмите Run as Administrator (Запуск от имени администратора). Когда откроется диалоговое окно Разрешить этому приложению вносить изменения на вашем устройстве?, нажмите Да.

После этого вы увидите текстовый интерфейс со строкой следующего вида:

Выйдите из системной папки с помощью следующей команды:

cd ~

Copy

Теперь вы находитесь в домашнем каталоге, например, PS C:\Users\sammy.

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

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

В этом обучающем руководстве мы используем политику исполнения RemoteSigned для установки разрешений для текущего пользователя. Она позволяет PowerShell принимать скрипты из доверенных источников, но не делает уровень разрешений таким широким, как при использовании политики Unrestricted. Введите в PowerShell следующую команду:

Set-ExecutionPolicy -Scope CurrentUser

Copy

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

RemoteSigned

Copy

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

Get-ExecutionPolicy -List

Copy

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

Output        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

Copy

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

$script | Get-Member

Copy

В результате будут возвращены все члены (свойства и методы) этого объекта WebClient:

 . . .
[secondary_label Snippet of Output]
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")

Copy

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

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

Copy

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

Разрешите PowerShell выполнить установку Chocolatey. После завершения установки вы можете начать установку дополнительных инструментов с помощью команды choco.

Если вам потребуется произвести обновление Chocolatey, запустите следующую команду:

choco upgrade chocolatey

Copy

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

Шаг 3 — Установка текстового редактора Nano (необязательно)

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

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

choco install -y nano

Copy

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

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

Шаг 4 — Установка Go

Как и в случае с nano, вы будете использовать Chocolatey для установки Go:

choco install -y golang

Copy

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

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

OutputEnvironment 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

Copy

Результаты будут выглядеть примерно так:

Outputgo version go1.12.1 windows/amd643.7.0

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

Шаг 5 — Создание рабочего пространства Go

Вы установили Chocolatey, nano и 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 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

Выполните следующую команду для перехода в каталог $HOME:

cd $HOME

Copy

Затем создайте структуру каталогов для рабочего пространства Go:

mkdir go/bin, go/src

Copy

Таким образом обеспечивается размещение следующей структуры каталогов:

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

До выпуска версии Go 1.8 обязательно было создавать локальную переменную среды с именем $GOPATH. Хотя это больше явно не требуется, создать такую переменную все равно полезно, поскольку многие сторонние инструменты зависят от ее использования.

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

$env:GOPATH

Copy

Вы должны увидеть следующие результаты с вашим именем пользователя вместо sammy:

OutputC:\Users\sammy\go

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

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

Copy

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

Вы создали корневой каталог рабочего пространства и задали переменную среды $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

Copy

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

Можно проверить успешную загрузку пакета godo посредством вывода каталога:

ls $env:GOPATH/src/github.com/digitalocean/godo

Copy

Результат должен выглядеть примерно так:

Output    Directory: C:\Users\sammy\go\src\github.com\digitalocean\godo


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 sammy  staff   2892 Apr  5 15:56 CHANGELOG.md
-rw-r--r--  1 sammy  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

На этом шаге вы создали рабочее пространство Go и настроили необходимые переменные среды. На следующем шаге мы протестируем рабочее пространство, запустив в нем код.

Шаг 6 — Создание простой программы

Мы настроили рабочее пространство Go и теперь можем создать программу “Hello, World!” Так вы убедитесь, что ваше рабочее пространство настроено правильно, и сможете лучше познакомиться с Go. Поскольку вы создаете один исходный файл Go, а не фактический проект, вам не нужно находиться в рабочем пространстве.

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

nano hello.go

Copy

Когда текстовый файл откроется в nano, наберите название вашей программы:

hello.go

package main

import "fmt"

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

Copy

Закройте nano с помощью клавиш CTRL и X. Когда вам будет предложено сохранить файл, нажмите Y и затем ENTER.

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

После выхода из nano и возврата в оболочку запустите программу:

go run hello.go

Copy

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

OutputHello, World!

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