В этом уроке мы не будем долго рассуждать, зачем нужен Go. Сделаем полезнее: создадим первый файл, запустим его через go run, соберем бинарник через go build и разберем ровно те слова, которые встретятся в минимальной программе: package main, import, func main и fmt.Println
Результат должен быть простой: в терминале появляется строка, которую вы сами напечатали из Go-кода. Если это получилось, дальше язык уже не выглядит как закрытая территория
Что получится в конце
Мы сделаем маленькую программу main.go:
package main
import "fmt"
func main() {
name := "Dinar"
fmt.Println("Привет,", name)
}
После запуска команда:
go run .
выведет:
Привет, Dinar
Это не учебная магия. go run компилирует программу во временный файл и сразу запускает ее. Для первого знакомства это удобнее, чем отдельно собирать приложение
Что нужно заранее
Нужен установленный Go и терминал. Проверка одна:
go version
Если терминал показывает версию Go, можно продолжать. Если пишет, что команда не найдена, сначала откройте соседний урок Как установить Go: Windows, macOS, Linux и проверка версии
Работать можно в любом редакторе. Для первого файла подойдет даже обычный текстовый редактор, но удобнее использовать редактор с подсветкой Go и автоматическим форматированием
Создаем папку и модуль
Сделайте отдельную папку под урок:
mkdir go-first
cd go-first
Теперь создайте модуль:
go mod init example.com/go-first
Команда создаст файл go.mod. В первом уроке он почти пустой, но это нормальный старт для современных Go-проектов. Модуль сообщает инструментам Go, как называется проект и какие зависимости ему нужны. Даже если зависимостей пока нет, привычка начинать с go mod init сбережет нервы позже
Первый файл main.go
Создайте файл main.go и вставьте код:
package main
import "fmt"
func main() {
name := "Dinar"
fmt.Println("Привет,", name)
}
Запустите:
go run .
Точка в конце значит: запусти текущий пакет из текущей папки. Можно было написать go run main.go, но вариант с точкой ближе к реальной работе, где в папке быстро появляется несколько файлов
Что означает package main
Первая строка:
package main
говорит, что этот файл относится к пакету main. В Go файлы собираются в пакеты. Исполняемая программа, которую можно запустить, должна иметь пакет main и функцию main
Если написать другой пакет, например package tools, это уже будет не самостоятельная программа, а код, который можно подключать из другого места. Для первого урока держимся правила: хотим запускать файл как приложение, пишем package main
Зачем нужен import
Строка:
import "fmt"
подключает стандартный пакет fmt. Он отвечает за форматирование текста: печать в терминал, сборку строк, вывод значений. В нашем примере нужна функция fmt.Println
Go не любит лишние импорты. Если вы подключили fmt, но нигде его не используете, программа не соберется. Это может раздражать в первые десять минут, зато потом помогает держать код чистым
Что делает func main
Функция:
func main() {
name := "Dinar"
fmt.Println("Привет,", name)
}
это точка входа. Когда вы запускаете программу, Go ищет main внутри пакета main и начинает выполнение оттуда
Строка:
name := "Dinar"
создает переменную. Оператор := используется внутри функции, когда Go может сам вывести тип по значению справа. Здесь значение строковое, значит переменная name получает тип string
А строка:
fmt.Println("Привет,", name)
печатает несколько значений через пробел и добавляет перенос строки в конце
go run и go build
Для учебного запуска используйте:
go run .
Для сборки отдельного исполняемого файла:
go build
После go build в папке появится бинарник с именем проекта. На macOS и Linux его можно запустить так:
./go-first
На Windows обычно получится файл go-first.exe
Практическое правило простое: go run удобен, пока вы учитесь и часто меняете код; go build нужен, когда хотите получить готовую программу
Как изменить пример под себя
Поменяйте имя и добавьте еще одну переменную:
package main
import "fmt"
func main() {
name := "Алия"
lessonsDone := 1
fmt.Println("Привет,", name)
fmt.Println("Уроков пройдено:", lessonsDone)
}
Запустите снова:
go run .
Go сам поймет, что name это строка, а lessonsDone это число. В следующем уроке про переменные мы разберем, когда лучше доверять выводу типа, а когда писать тип явно
Частые ошибки и порядок проверки
Если видите go: go.mod file not found, значит вы запускаете go run . в папке без модуля. Выполните go mod init example.com/go-first или перейдите в правильную папку
Если ошибка говорит expected 'package', found ..., проверьте первую строку файла. Любой Go-файл должен начинаться с объявления пакета
Если появляется imported and not used, удалите лишний импорт или используйте пакет в коде. В Go это не предупреждение, а ошибка компиляции
Если терминал не знает команду go, проблема не в файле, а в установке или переменной PATH. Проверьте установку по официальной инструкции
Что может быть еще интересно по этой теме
Go и Golang это одно и то же? Да. Официальное название языка — Go, но в поиске и разговорах часто используют Golang, потому что короткое слово go сложно искать
Можно ли учить Go первым языком? Можно, если вы готовы к компилятору, типам и терминалу. Go дружелюбнее многих системных языков, но требует аккуратности с файлами, пакетами и ошибками
Нужно ли сразу знать все команды go? Нет. Для старта хватит go version, go mod init, go run ., go build и позже go test
Почему Go ругается на неиспользуемые переменные? Так язык защищает проект от мусора. Для новичка это кажется строгим, но в больших проектах такая строгость экономит часы
Что открыть дальше
- Как установить Go: Windows, macOS, Linux и проверка версии — если команда
goне запускается. - Переменные, типы и функции в Go — следующий практический шаг после первого файла.
- Struct и методы в Go: первый объект без ООП-магии — когда появится желание собрать связанные данные в одну сущность.
- Go modules: go mod init, tidy и зависимости — чтобы понять файл
go.modглубже.



