Здравствуйте! Начинаем наш курс по Go. Этот первый урок заложит фундамент для всей дальнейшей работы. Мы сосредоточимся на базовом рабочем цикле разработчика: от создания нового проекта до запуска готовой программы.
Ваш опыт в экосистеме Node.js/TypeScript означает, что вы привыкли работать с инструментами командной строки для управления зависимостями (npm), компиляции (tsc) и запуска кода (node). В Go многие из этих функций встроены в единый инструмент — команду go. Сегодня мы освоим её основные подкоманды, которые позволят вам инициализировать Go-модуль, написать, отформатировать, собрать и запустить минимальную программу. К концу этого урока у вас будет чёткое представление о стартовой точке любого Go-проекта.
Основа всего: команда go
В отличие от JavaScript-экосистемы, где для сборки, форматирования и управления проектом часто используется набор отдельных инструментов (Webpack, Prettier, ESLint, npm/yarn), Go придерживается иного подхода. Большинство стандартных операций выполняется через одну команду go, которая имеет различные "подкоманды" или "глаголы" (verbs).
Сегодня мы рассмотрим четыре ключевые подкоманды:
go mod init: для инициализации нового проекта (модуля).go run: для компиляции и немедленного запуска программы.go fmt: для автоматического форматирования кода.go build: для компиляции программы в исполняемый файл.
Шаг 1: Инициализация проекта (модуля)
В Go основной единицей для управления зависимостями и версионирования кода является модуль. Это аналог пакета в npm, а файл go.mod можно сравнить с package.json. Модуль — это коллекция Go-пакетов, которые выпускаются, версионируются и распространяются вместе.
Давайте создадим наш первый модуль.
- Создайте на вашем компьютере директорию для проекта, например,
go-hello. - Перейдите в эту директорию в вашем терминале.
- Выполните команду:
go mod init go-hello
Эта команда создаст в текущей директории файл go.mod. Имя go-hello — это путь к модулю. Для проектов, которые вы планируете публиковать, принято использовать путь к репозиторию, например, github.com/your-user/go-hello, чтобы обеспечить уникальность имени. Но для локальных проектов простого имени достаточно.
Давайте подробнее разберемся в структуре модуля и файле go.mod, изучив руководство.
В этой статье от DigitalOcean подробно описывается процесс создания модуля и назначение его файлов. Это даст вам прочную основу для понимания структуры проектов в Go.
Прочтите разделы Creating a New Module и Understanding the go.mod File. Обратите внимание на объяснение команды go mod init и структуру файла go.mod. Мы пока не будем добавлять зависимости, поэтому файл go.sum у нас не появится.
Шаг 2: Создание, форматирование и запуск программы
Теперь, когда у нас есть модуль, давайте напишем и запустим нашу первую программу. Для этого мы создадим файл с исходным кодом, воспользуемся стандартным инструментом форматирования и запустим код.
1. Создайте файл main.go
Внутри директории go-hello создайте файл main.go со следующим содержимым:
package main
import "fmt"
func main() {
fmt.Println("Hello, Go!")
}
Не беспокойтесь, если синтаксис пока не знаком. Мы подробно разберем каждую строку в следующем уроке. Сейчас важно понять сам процесс работы с кодом.
2. Отформатируйте код с помощью go fmt
Одним из ключевых аспектов философии Go является наличие единого, общепринятого стиля кода. Это устраняет споры о форматировании и делает код более читаемым в любых проектах. Инструмент gofmt (доступный через go fmt) — это стандартный форматер.
Выполните в терминале:
go fmt .
Эта команда форматирует все .go файлы в текущей директории и поддиректориях. Если ваш код уже был отформатирован (как в примере выше), команда ничего не выведет и не изменит. Если бы в коде были проблемы с отступами или пробелами, go fmt исправил бы их автоматически. Это аналог запуска Prettier в проектах на TypeScript.
The How and Why of Go, Part 1: Tooling - OK I GIVE UP
Этот раздел из статьи кратко, но точно описывает философию и использование gofmt.
Прочтите подраздел Built-in Go tools, чтобы лучше понять цель этого инструмента.
3. Запустите программу с помощью go run
Команда go run компилирует и запускает программу одним действием. Это очень удобно на этапе разработки для быстрой проверки изменений. Она похожа на ts-node или node для простых скриптов.
Выполните в терминале:
go run .
Точка (.) указывает, что нужно запустить пакет, находящийся в текущей директории. Вы должны увидеть в консоли вывод:
Hello, Go!
Шаг 3: Сборка исполняемого файла
Одна из сильных сторон Go — компиляция в нативный исполняемый файл. В отличие от Node.js, где для запуска приложения требуется установленный рантайм Node.js, скомпилированное Go-приложение является самодостаточным. Вы можете передать этот единственный файл на другой компьютер с той же операционной системой и архитектурой, и он запустится без каких-либо дополнительных зависимостей.
Для сборки исполняемого файла используется команда go build.
Выполните в терминале:
go build .
Эта команда скомпилирует ваш код и создаст в текущей директории исполняемый файл. На macOS и Linux он будет называться go-hello (по имени модуля), а на Windows — go-hello.exe.
Теперь запустите этот файл напрямую:
На macOS/Linux:
./go-hello
На Windows:
.\go-hello.exe
Вы снова увидите в консоли Hello, Go!. Но на этот раз вы запустили не исходный код через утилиту Go, а предварительно скомпилированную, оптимизированную нативную программу.
Давайте посмотрим, как весь этот процесс выглядит на видео.
Курс Golang за 100 минут для начинающих | Основы языка. Обучение разработке бесплатно. Golang с нуля
В этом видео на русском языке наглядно демонстрируется весь цикл, который мы только что прошли: от создания файла до сборки исполняемого бинарного файла.
Посмотрите следующие фрагменты: Сначала автор создает файл и запускает его с помощью go run: создание и запуск. Затем он объясняет концепцию модуля, инициализирует его с помощью go mod init и собирает исполняемый файл командой go build: модули и сборка. Это поможет вам визуально закрепить пройденный материал.
Подведение итогов по инструментам
Вы познакомились с основными командами для работы с Go-проектом. Эта инфографика поможет вам систематизировать полученные знания и увидеть, какие еще инструменты есть в арсенале Go-разработчика.

Заключение
Отлично, вы прошли полный базовый цикл разработки на Go! Вы научились:
- Инициализировать новый проект как Go-модуль с помощью
go mod init. - Форматировать код в соответствии с единым стандартом, используя
go fmt. - Быстро компилировать и запускать код на этапе разработки командой
go run. - Собирать самодостаточный исполняемый файл для развертывания с помощью
go build.
Этот набор инструментов составляет основу ежедневной работы Go-программиста.
В следующем уроке мы вернемся к нашему файлу main.go и детально разберем, что означает каждая его строка: что такое package main, как работает import и почему функция main является точкой входа в программу.