Практика 1. Установка Go, первая программа и основные команды
Цель
Настроить рабочую среду на Linux, macOS или Windows, освоить структуру Go-модуля и базовый цикл разработки: создание проекта, запуск, форматирование, проверка и сборка исполняемого файла.
Результат работы
Студент должен уметь:
- проверить версию и архитектуру Go;
- создать модуль через
go mod init; - объяснить назначение
package main,importиfunc main; - использовать
go run,go build,go fmt,go testиgo env; - собрать программу на своей системе;
- подготовить переносимый проект без абсолютных путей.
Подготовка среды
Установите Go 1.27 или новее с go.dev/dl.
Проверка одинакова на всех системах:
go versiongo env GOOS GOARCHДля macOS убедитесь, что установщик соответствует архитектуре:
- Apple Silicon —
arm64; - Intel —
amd64.
На Windows выполняйте команды в PowerShell. Если после установки команда go
не найдена, закройте и заново откройте терминал.
A. Разминка
Задание 1. Паспорт среды
Создайте текстовый файл environment.txt и запишите в него результаты команд:
go versiongo env GOOS GOARCH GOROOT GOPATHОтветьте в файле на вопросы:
- Какая версия Go установлена?
- Какая операционная система указана в
GOOS? - Какая архитектура указана в
GOARCH? - Чем
GOROOTотличается от каталога вашего проекта?
Не изменяйте GOROOT и не создавайте учебный проект внутри него.
Задание 2. Первый модуль
Создайте каталог practice-01 и перейдите в него.
Linux/macOS:
mkdir practice-01cd practice-01Windows PowerShell:
New-Item -ItemType Directory practice-01Set-Location practice-01Инициализируйте модуль:
go mod init example.com/practice-01Создайте main.go:
package main
import "fmt"
func main() { fmt.Println("Go установлен и работает!")}Запустите:
go run .Задание 3. Разбор структуры
Добавьте в README.md краткие ответы:
- что хранится в
go.mod; - зачем нужен пакет
main; - какую роль выполняет функция
main; - почему импорт
fmtнельзя оставить неиспользованным; - чем
go run .отличается отgo build ..
B. Основные задания
Задание 4. Визитная карточка
Измените программу так, чтобы она выводила:
Имя: Анна ПетроваГруппа: ИВТ-21Операционная система: WindowsЯзык: GoЗначения задайте отдельными переменными. Название операционной системы пока укажите вручную. Автоматическое определение платформы будет рассмотрено позже.
Требования:
- код должен находиться в
main.go; - все имена в коде пишутся на английском языке;
- текст вывода может быть русским;
- после изменения выполните
go fmt ./....
Задание 5. Намеренные ошибки
По очереди создайте и исправьте три ошибки:
- удалите закрывающую фигурную скобку;
- добавьте неиспользуемый импорт
strings; - переименуйте функцию
mainвstart.
Для каждого случая запишите в README.md:
- какую команду вы запускали;
- сообщение компилятора;
- является ли проблема ошибкой компиляции или ошибкой запуска;
- как вы её исправили.
Задание 6. Сборка
Соберите программу с явным именем.
Linux/macOS:
go build -o student-card ../student-cardWindows PowerShell:
go build -o student-card.exe ../student-card.exeНе добавляйте собранный исполняемый файл в сдаваемый архив или Git-репозиторий.
Задание 7. Проверка проекта
Выполните:
go fmt ./...go test ./...go vet ./...Объясните, почему go test ./... завершается успешно, хотя тестовых функций в
проекте ещё нет.
C. Мини-проект «Карточка курса»
Создайте программу со следующим примерным выводом:
================================ ЯЗЫК ПРОГРАММИРОВАНИЯ GO================================Студент: Анна ПетроваГруппа: ИВТ-21Платформа: macOSУчебный год: 2026-2027Практическая работа: 1================================Среда готова к работеТребования:
- данные студента задаются в начале
main; - повторяющиеся строки не копируются без необходимости;
- программа не читает и не записывает абсолютные пути;
- программа работает без изменения исходного кода на любой поддерживаемой ОС;
- проект запускается через
go run .; - проект проходит
go fmt ./...,go test ./...иgo vet ./....
Структура сдачи
practice-01/├── go.mod├── main.go├── README.md└── environment.txtСобранный бинарный файл в сдачу не включается.
Критерии оценивания
| Критерий | Баллы |
|---|---|
| Установка и паспорт среды | 0–2 |
| Корректный Go-модуль | 0–2 |
| Выполнение заданий 4–7 | 0–4 |
| Мини-проект | 0–4 |
| Переносимость и отсутствие абсолютных путей | 0–2 |
| Форматирование и объяснение ошибок | 0–2 |
| Максимум | 16 |
Вопросы для защиты
- Что создаёт
go mod init? - Чем модуль отличается от пакета?
- Когда использовать
go run, а когдаgo build? - Почему Go запрещает неиспользуемые импорты?
- Что означают
GOOSиGOARCH? - Почему бинарный файл не следует включать в исходный проект?