Содержание урока · 11 разделов
- Установка Go на Windows
- Установка на macOS и Linux
- Способы установки одним взглядом
- PATH: почему без него ничего не запускается
- Первая программа: три строки и запуск
- go run против go build: в чём разница
- Полный цикл первого запуска
- Редактор кода: что выбрать
- Песочница урока
- Коротко: что запомнить
- Вопросы и ответы
Самая частая точка срыва новичка случается не в коде, а до него. Я не раз видел одну и ту же картину: человек скачивает архив, распаковывает его куда попало, набирает в терминале go и получает «command not found». Проблема тут не в способностях и не в Go — просто один шаг из инструкции, путь в PATH, обычно и вылетает. Поэтому дальше каждый шаг идёт с проверкой: после установки мы не верим установщику на слово, а набираем go version и читаем ответ системы. Если команда отвечает версией — всё, самый нервный день курса позади. Терминал понадобится и дальше, но уже по накатанной: две-три команды, которые вы сегодня наберёте, останутся теми же самыми до конца обучения.
Установка Go на Windows#
Все загрузки берутся с одной страницы — go.dev/dl: это официальный сайт языка, там же лежат старые версии и контрольные суммы. Для Windows нужен установщик .msi: запустили, нажимали «Далее» до конца, и установщик сам пропишет компилятор в PATH — вручную ничего настраивать не требуется. Теперь проверка. Откройте PowerShell (правый клик по «Пуск» → «Терминал») и наберите go version. Ответ вида go version go1.22.x windows/amd64 означает, что компилятор установлен и виден системе, где 1.22.x — конкретная сборка. Если PowerShell уверяет, что команды go не существует, перезапустите окно терминала: переменные окружения обновляются только в новых процессах, старое окно о недавней установке не знает. Через пару перезапусков всё обычно находится. Есть и альтернатива через пакетный менеджер — winget install GoLang.Go, — но для первого раза классический установщик понятнее.
Установка на macOS и Linux#
macOS: скачайте .pkg с той же страницы go.dev/dl или поставьте через Homebrew командой brew install go. Результат одинаковый, Homebrew лишь удобнее, если вы им уже пользуетесь. Linux: здесь главный подводный камень — репозитории дистрибутива. Команда apt install golang-go сработает, но Ubuntu и Debian нередко держат в пакете заметно устаревшую версию Go, а язык развивается быстро, и какой-нибудь свежий синтаксис может просто не собраться. Надёжный путь, который рекомендует документация: скачать tar.gz с go.dev/dl, распаковать в /usr/local/go и добавить /usr/local/go/bin в PATH в вашем ~/.profile или ~/.bashrc, после чего открыть новый терминал и выполнить go version. Обратите внимание на путь: система ищет компилятор в стандартных местах, а самовольная распаковка в /home/user/go — классический источник вопроса «почему у меня не работает, у всех работает».
Не ставьте два компилятора параллельно (из репозитория и из официального архива). Терминал найдёт того, кто первым встретится в PATH, и вы будете отлаживать «непонятно какую версию». Одна установка — одна версия, это правило экономит часы.
Способы установки одним взглядом#
| Система | Способ | Что использовать |
|---|---|---|
| Windows | официальный установщик | .msi с go.dev/dl |
| Windows | пакетный менеджер | winget install GoLang.Go |
| macOS | официальный установщик | .pkg с go.dev/dl |
| macOS | Homebrew | brew install go |
| Linux | официальный архив | tar.gz в /usr/local/go |
| Linux | репозиторий | apt install golang-go (версия может отставать) |
PATH: почему без него ничего не запускается#
Одно пояснение, чтобы вместо запоминания шагов вы поняли механику. Когда вы набираете go version, терминал ищет исполняемый файл с именем go по списку папок, записанному в переменной окружения PATH. Установщик Windows добавляет туда C:\Program Files\Go\bin, и всё работает. В Linux при ручной распаковке это добавление делаете вы сами строкой export PATH=$PATH:/usr/local/go/bin — и если её нет, терминал честно отвечает, что команды go не знает, хотя файл лежит на диске. Проверить, какой именно компилятор вызывается, можно командой which go (macOS, Linux) или where.exe go (Windows). Понимание этой механики полезнее любых заученных шагов: когда в следующий раз «не запускается программа после установки», вы первым делом посмотрите на PATH, а не будете переустанавливать всё подряд.
Первая программа: три строки и запуск#
Создайте папку hello, а в ней файл main.go. Имя файла может быть каким угодно, main.go — просто договорённость для главного файла. Внутрь положите классический минимум:
hello.go — канонический первый пример
GOpackage main
import "fmt"
func main() {
fmt.Println("Привет, мир!")
}package main помечает программу (а не библиотеку), import "fmt" подключает пакет стандартной библиотеки для печати, func main() — точка входа, с которой начинается выполнение. Полный разбор этой анатомии — в следующем уроке.
Теперь запуск. Откройте терминал в папке проекта (cd путь/к/папке) и выполните: go run main.go. Через секунду в консоли появится строка «Привет, мир!». Если появится сообщение об ошибке с номером строки — прочитайте его, компилятор Go пишет по-человечески и почти всегда указывает точное место. Команда go run — ваш рабочий режим на весь базовый курс: поправил, запустил, посмотрел.
go run против go build: в чём разница#
Две команды, которые вы будете вводить чаще всего, похожи, но служат разным целям. go run main.go компилирует программу во временный каталог и тут же выполняет: бинарник вы не увидите, только вывод. Идеально для проверки идей и учёбы. go build тоже компилирует, но результат кладёт рядом — готовый исполняемый файл, который можно копировать, пересылать и запускать на других машинах той же операционной системы без установленного Go вообще: ни компилятора, ни рантайма там не требуется. На Windows такой файл получит расширение .exe, на macOS и Linux — будет без расширения. Имя по умолчанию берётся из имени модуля или папки проекта; своё имя задаётся флагом -o: go build -o hello-world main.go. Моё рабочее правило: экспериментируете — go run, отдаёте результат кому-то наружу — go build.
Полный цикл первого запуска#
- Создайте папку проекта и файл main.go внутри неё.
- Запишите в файл код hello world из примера выше.
- Откройте терминал в папке проекта: cd путь/к/папке.
- Выполните go run main.go и посмотрите вывод.
- Выполните go build -o hello main.go — рядом появится исполняемый файл.
- Запустите его напрямую: ./hello (macOS/Linux) или .\hello.exe (Windows).
Команда go mod init hello превратит папку в полноценный модуль — после этого go build достаточно вызвать без аргументов, он сам разберётся, что собирать. Модули понадобятся, когда начнёте ставить сторонние библиотеки; для первых уроков хватает go run.
Чем go run отличается от go build?
Что выведет программа?
Прочитайте код и выберите, что он выведет:
package main
import "fmt"
func main() {
fmt.Print("go run")
fmt.Println(" = быстро попробовать")
}Песочница: первый запуск без установки
Запустите код, затем поменяйте пример 7 * 6 на своё выражение или добавьте строку своего имени. Ошибки в песочнице безопасны: прочитайте сообщение, поправьте, запустите снова.
Запустите код, чтобы увидеть вывод.
Соберите порядок действий из памяти
Разложите шаги от создания файла до готового бинарника в правильном порядке.
Строки
Ваша программа
Нажимайте на строки слева, чтобы собрать программу
Редактор кода: что выбрать#
Компилятор — половина окружения, вторая половина — редактор. Стандарт де-факто — VS Code с официальным расширением Go: бесплатно, ставится за минуту, подтягивает gopls — сервер языка, который подсказывает имена функций, показывает ошибки прямо при печати и форматирует код при сохранении. Это экономит больше времени, чем кажется: компилятор Go строг, и чем раньше подсветится лишний импорт, тем меньше нервов. Второй заметный вариант — GoLand от JetBrains: полноценная IDE, платная, но с пробным периодом; для первых уроков разницы с VS Code вы не заметите. Любители терминала живут в vim или neovim с плагинами — тоже рабочий путь, но новичку он добавит проблем поверх обучения. Начните с VS Code и не тратьте на выбор редактора больше получаса: это инструмент, а не часть языка.
Новые версии выходят дважды в год — обычно в феврале и августе, поддерживаются две последние. Для курса важен не самый свежий релиз: любое значение из go version 1.x подходит, синтаксис базовых уроков стабилен годами.
Песочница урока
Редактируйте код и запускайте его прямо здесь — интерпретатор работает в браузере, ничего устанавливать не нужно. За каждый запуск — +2 XP.
Запустите код, чтобы увидеть вывод.
Коротко: что запомнить
- Go ставится установщиком с go.dev/dl или через пакетный менеджер; проверка установки — go version.
- На Linux надёжнее официальный tar.gz: репозиторные пакеты часто отстают от текущей версии.
- PATH — список папок, где терминал ищет программы; «command not found» почти всегда про него.
- go run компилирует во временный каталог и запускает сразу; go build оставляет бинарник рядом.
- Бинарник из go build работает на любой машине той же ОС без установленного Go.
- Редактор: VS Code с расширением Go; gofmt форматирует код, gopls подсказывает и подсвечивает ошибки.
- Песочница курса заменяет установку на время теории, но локальный Go стоит поставить уже сейчас.
Домашнее задание
Установите Go на своей машине и пройдите весь цикл из урока: go version, файл main.go с выводом двух строк, go run, затем go build -o hello. Запустите полученный бинарник напрямую без go run и убедитесь, что он работает сам по себе. В заметки себе запишите точную строку из go version — приятно иметь это в дневнике обучения.
Личные заметкиПусто
Вопросы и ответы по уроку
Нужен ли установленный Go для уроков этого курса?
Нет. Все runnable-примеры выполняются интерпретатором прямо в браузере. Локальная установка нужна для практики вне сайта и финального проекта курса.
go version пишет «command not found» — что не так?
Терминал не видит компилятор в PATH. Перезапустите окно терминала после установки; на Linux проверьте, что строка с /usr/local/go/bin добавлена в PATH и открыт новый шелл.
Можно ли учить Go совсем без установки?
Да, на это и рассчитан курс: песочница есть в каждом уроке и отдельно на странице /playground/. Но для серьёзной практики локальный компилятор всё же поставьте.
Термины урока
Ключевые понятия из этого урока — короткие определения в глоссарии. Наведите на термин, чтобы вспомнить, откройте карточку для подробностей и ссылки на практику.
Изучайте дальше
Следующая ступень учебного пути
Продвинутые возможности Go: от замыканий до рефлексии
Продвинутый курс Go: замыкания, defer, горутины, каналы, контекст, интерфейсы, дженерики, рефлексия, тесты и JSON. 25 уроков с практикой в браузере.
- Писать и читать конкурентный код: go-функции, каналы, select
- Управлять жизненным циклом операций через context
- Проектировать API на интерфейсах
- Использовать дженерики без злоупотребления