Ознакомительный фрагмент 0.21.0-sample · вступление и главы 1–12. Бесплатный фрагмент: главы 1–12.

1. Рабочее место, которое можно проверить

В конце этой главы у вас будет папка проекта и терминал, в котором работает команда go version. Пока не нужно выбирать базу данных или оплачивать сервер. Сначала убедимся, что можем сохранять файлы и запускать инструменты.

Ориентир на экране

Снимок работающей контрольной точки 42 показывает итоговый интерфейс. В ранних главах мы будем приходить к нему постепенно; адреса, заказ и цены здесь учебные.

Тот же итоговый каталог на смартфоне: навигация и форма помещаются по ширине экрана.

Тот же итоговый каталог на смартфоне: навигация и форма помещаются по ширине экрана.

Образ: свой рабочий стол

Представьте стол, на котором вы собираетесь написать письмо. На нём лежит папка, внутри — листы; у папки есть название. Если оставить письмо на соседнем столе, открытая перед вами папка его не получит. С программой происходит похожая путаница: вы исправили один main.go, а терминал запускает другой.

Наша опора — стол, папка, сохранённый лист. Рабочая папка объединяет файлы проекта. Текущая папка терминала определяет, где команда начинает работу. Сохранение переносит набранный в редакторе текст в файл, который прочитает инструмент Go. Редактор может показывать несколько проектов, поэтому взгляд на вкладку ещё не доказывает, что терминал открыт там же.

У образа есть граница: на компьютере команды могут принимать полный путь к чужой папке. Пока мы намеренно работаем из папки проекта. Нарисуйте прямоугольник с названием bookshop, а внутри — go.mod. Перед запуском показывайте пальцем: «Команду выполняю здесь». Это маленькая привычка, которая избавляет от долгих поисков не той ошибки.

Сначала целое

Наша работа будет устроена так:

Где Что вы делаете Что получаете
Редактор Пишете и сохраняете файл main.go Текст программы на диске
Терминал Вводите go run . Go собирает и запускает программу
Терминал Читаете ответ Проверяете, совпал ли результат с ожиданием

Сохранённый файл и открытая вкладка редактора — не одно и то же. Если вы изменили текст, но не сохранили его, команда может запустить предыдущую версию. Эту причину стоит проверять прежде, чем переписывать программу.

Терминал — программа, принимающая команды. Оболочка внутри него разбирает эти команды. В macOS вы обычно встретите zsh, в Linux — bash, в Windows будем использовать PowerShell. Там, где команды различаются, книга покажет оба варианта.

Установите Go

Откройте официальную страницу установки. Выберите свою операционную систему и процессор. Для Windows используется установщик MSI, для macOS — PKG; на Linux следуйте инструкции для архива вашей архитектуры. Не вставляйте в терминал команды удаления старой установки, если не понимаете, какой каталог они затронут.

Материалы этого рабочего выпуска проверяются на Go 1.27.1. Ваша версия указана в выводе команды, а не в названии скачанного файла. После установки закройте терминал и откройте новый: так он получит обновлённые настройки поиска программ.

Введите только команду, без символов приглашения вроде $ или >:

go version

Форма ответа:

go version go1.27.1 darwin/arm64

Последняя часть зависит от компьютера. darwin означает macOS, arm64 — архитектуру процессора. На Windows или Linux она будет другой. Здесь важно, что вы получили ответ программы Go, а не сообщение «команда не найдена».

Если Go установлен раньше, не удаляйте его наугад. Сначала посмотрите версию и сверьтесь с инструкцией обновления. Работающий чужой проект может зависеть от своего набора инструментов.

Подготовьте папку

Выберите место для учебных проектов, к которому у вас есть доступ. Не создавайте новый магазин внутри другого проекта. Откройте терминал в выбранной папке и выполните:

mkdir bookshop
cd bookshop

Эти две команды подходят и для PowerShell, и для bash/zsh. Первая создаёт папку, вторая делает её текущей: следующие команды будут работать относительно неё.

Если bookshop уже существует, сначала посмотрите, что внутри. Для чистого начала можно выбрать другое имя, например bookshop-study; тогда используйте его и в команде cd.

Проверьте, где вы находитесь. В macOS/Linux:

pwd
ls

В PowerShell:

Get-Location
Get-ChildItem

Первая команда показывает путь, вторая — содержимое. Не надо добиваться точного совпадения пути с книгой: у каждого своя домашняя папка. Важно увидеть выбранную вами папку bookshop.

Откройте её в редакторе через меню открытия папки. Подойдёт редактор обычного текста, который сохраняет UTF-8. Если используете VS Code, открывайте всю папку, а не случайный файл из соседнего проекта. Для первых глав дополнительные расширения необязательны.

Дайте проекту имя

В терминале внутри bookshop выполните один раз:

go mod init example.com/bookshop

Появится go.mod. Модуль — группа пакетов Go с общим описанием версии и зависимостей. Пока достаточно понимать: этот файл обозначает корень нашего проекта. Запись example.com/bookshop служит именем учебного модуля; для этого упражнения не нужно покупать домен или создавать сайт по такому адресу.

Код книги связан с репозиторием dake-edu/gopher-shop. Контрольные точки находятся в book/examples/; их имена модулей отражают путь в репозитории. Для собственного проекта мы используем учебное имя example.com/bookshop, чтобы отличать его от готовых примеров.

Не редактируйте go.mod ради буквального совпадения с изображением в чужом уроке: версия в нём зависит от инструмента, который его создал. В комплекте книги лежат самостоятельные контрольные точки со своими готовыми go.mod; для них повторный go mod init не нужен.

Если не получилось

Симптом Что проверить
go не найден Установка завершена? Открыт новый терминал? Найден ли каталог Go через PATH?
go.mod already exists Модуль уже создан; повторная инициализация не нужна
Отказ в создании папки Выберите доступную папку пользователя
Редактор показывает другие файлы Сравните открытую папку с выводом pwd или Get-Location

PATH — список папок, где оболочка ищет исполняемые программы. Он похож на список адресов доставки, но саму программу не устанавливает. Если адрес записан верно, а файла по нему нет, поиск всё равно не сработает.

Опорные пункты: команда состоит из частей

В go mod init example.com/bookshop пробелы отделяют имя программы go, подкоманду mod, действие init и имя модуля. Слеш / здесь является частью имени модуля, а не командой перехода в папку. В go run . последняя точка — отдельный аргумент «текущий пакет».

Символы приглашения терминала ($, >, иногда %) перед командой не набирают. Они принадлежат оболочке. Круглых или фигурных скобок в этих командах нет: это команды инструменту, а не исходный код Go.

Опора: сохранённый файл, команда Go и наблюдаемый результат

Восстановите по памяти. Закройте пример и назовите три места: где редактируем, что запускаем, где проверяем результат. Если путаются путь и имя модуля, вернитесь к выводу текущей папки и откройте go.mod.

Разминка

Предскажите. Если создать файл в папке A, а команду запустить из папки B, обязана ли команда увидеть этот файл?

Заполните. Какая команда меняет текущую папку на bookshop?

Почините. Редактор сохранил файл в bookshop-old, а терминал открыт в bookshop. Как проверить расхождение, не переустанавливая Go?

Задание

Обязательное. Создайте рабочую папку и модуль. Сохраните в environment.txt вывод go version и путь к папке. Проверьте в редакторе, что рядом существует go.mod.

На своих данных. Назовите папку по-своему и повторите проверку пути. Имя папки и имя модуля не обязаны совпадать.

По желанию. Найдите путь к установленной команде Go: command -v go в bash/zsh или Get-Command go в PowerShell.

Ответы и самопроверка

Команда работает в своей текущей папке и не обязана искать файл в соседней. Для перехода используется cd bookshop. Чтобы найти расхождение, сравните путь терминала с местом сохранения файла в редакторе.

Вы готовы двигаться дальше, если можете объяснить, где лежит проект, показать go.mod и получить версию Go. Следующая глава даст этой папке первую программу.