Установка Go и первый запуск

Go (или Golang) - это современный язык программирования, созданный в Google. Он простой, быстрый и отлично подходит для создания веб-сервисов.

Установка Go

Выбери свою ОС:

# Через Homebrew (рекомендуется)
brew install go

# Или скачайте .pkg с официального сайта: https://go.dev/dl/
# Из репозитория Ubuntu/Debian - просто, но версия обычно отстаёт
# на год-полтора. Для учёбы сгодится, для работы лучше архивом.
sudo apt update
sudo apt install golang-go

# Архивом с официального сайта - всегда актуальная версия.
# Номер посмотри на https://go.dev/dl/ (первая в списке) и подставь:
GO_VERSION=1.XX.X

wget https://go.dev/dl/go${GO_VERSION}.linux-amd64.tar.gz
sudo rm -rf /usr/local/go   # старую версию надо снести, а не распаковать поверх
sudo tar -C /usr/local -xzf go${GO_VERSION}.linux-amd64.tar.gz
export PATH=$PATH:/usr/local/go/bin

Версия здесь не написана намеренно: Go выпускает релиз раз в полгода, и любое конкретное число в туториале протухнет раньше, чем ты его прочитаешь. Заодно rm -rf /usr/local/go перед распаковкой - официальная инструкция, без него файлы двух версий смешиваются и go version показывает неправду.

  1. Скачайте установщик с официального сайта
  2. Запустите .msi файл
  3. Следуйте инструкциям установщика

Если ты пишешь backend «как на сервере» - поставь WSL2 + Ubuntu и используй команды из вкладки Linux.

После установки откройте новый терминал и выполните:
go version

Вы должны увидеть что-то вроде: go version go1.25.0 darwin/arm64 - конкретные числа будут свои, важно, что команда вообще отвечает и не пишет command not found.

Настройка окружения

Настраивать почти нечего: с версии 1.16 Go работает через модули, и проект живёт в любой папке, где тебе удобно. Никакого обязательного каталога нет.

GOPATH при этом никуда не делся, но занимается другим: в нём лежит кеш скачанных зависимостей и бинарники, которые ты ставишь через go install. По умолчанию это ~/go, и трогать его не нужно.

Единственное, что стоит добавить в ~/.bashrc или ~/.zshrc - путь к этим бинарникам, иначе установленные утилиты не запустятся по имени:

export PATH=$PATH:$(go env GOPATH)/bin

Подробнее про GOPATH, GOROOT и go env - в уроке Рабочее окружение.

Статьи и ответы на StackOverflow старше 2019 года требуют складывать код строго в `$GOPATH/src/github.com/username/project`. До появления модулей это было единственным способом разрешать импорты.

Сейчас это не нужно и мешает: внутри GOPATH некоторые версии Go до сих пор ведут себя иначе. Создавай проект где угодно и начинай с go mod init.

Первая программа

Создайте файл hello.go:

package main

import "fmt"

func main() {
    fmt.Println("Привет, мир!")
}

<CodeBlock language="go" title="hello.go" showRun={true}

package main

import "fmt"

func main() { fmt.Println("Привет, мир!") }

Запуск программы

У вас есть два способа запустить программу:

go run

Компилирует и сразу запускает программу:

go run hello.go
# Вывод: Привет, мир!

go build

Компилирует программу в исполняемый файл:

go build hello.go
./hello
# Вывод: Привет, мир!

<ComparisonTable data={{ headers: ["Команда", "Что делает", "Когда использовать"], rows: [ ["go run", "Компилирует и запускает", "Разработка и тестирование"], ["go build", "Создает исполняемый файл", "Финальная сборка"], ] }} />

Структура Go программы

Каждая Go программа состоит из:

  1. package main - точка входа программы
  2. import - подключение библиотек
  3. func main() - главная функция
- Go чувствителен к регистру - Фигурная скобка `{` должна быть на той же строке, что и объявление функции - Неиспользуемые импорты вызывают ошибку компиляции

Практическое задание

Модифицируйте программу, чтобы она:

  1. Спрашивала имя пользователя
  2. Выводила персональное приветствие
Подсказка

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

var name string
fmt.Print("Введите ваше имя: ")
fmt.Scan(&name)  // & означает «адрес переменной» - указатели разберём позже, пока просто используй этот синтаксис
fmt.Println("Привет,", name)

Итоги

Теперь вы умеете:

  • ✅ Устанавливать Go
  • ✅ Запускать программы с go run
  • ✅ Создавать исполняемые файлы с go build
  • ✅ Понимать базовую структуру Go программы

Готовы двигаться дальше? В следующем уроке мы изучим переменные и типы данных!

Типичная ошибка

Писать проект в $GOPATH/src «по старой памяти». В мире модулей это не обязательно - создавай проект в любой папке и начинай с go mod init.

Мини-практика

Создай папку hello, выполни go mod init hello, напиши main.go с fmt.Println("Hello, BackendStart!"), затем запусти go run ..

Зарегистрируйтесь бесплатно, чтобы пройти квиз, решить задание с автопроверкой и вести прогресс.