Перейти к содержимому

Практика 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 version
go env GOOS GOARCH

Для macOS убедитесь, что установщик соответствует архитектуре:

  • Apple Silicon — arm64;
  • Intel — amd64.

На Windows выполняйте команды в PowerShell. Если после установки команда go не найдена, закройте и заново откройте терминал.


A. Разминка

Задание 1. Паспорт среды

Создайте текстовый файл environment.txt и запишите в него результаты команд:

Окно терминала
go version
go env GOOS GOARCH GOROOT GOPATH

Ответьте в файле на вопросы:

  1. Какая версия Go установлена?
  2. Какая операционная система указана в GOOS?
  3. Какая архитектура указана в GOARCH?
  4. Чем GOROOT отличается от каталога вашего проекта?

Не изменяйте GOROOT и не создавайте учебный проект внутри него.

Задание 2. Первый модуль

Создайте каталог practice-01 и перейдите в него.

Linux/macOS:

Окно терминала
mkdir practice-01
cd practice-01

Windows PowerShell:

Окно терминала
New-Item -ItemType Directory practice-01
Set-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. Намеренные ошибки

По очереди создайте и исправьте три ошибки:

  1. удалите закрывающую фигурную скобку;
  2. добавьте неиспользуемый импорт strings;
  3. переименуйте функцию main в start.

Для каждого случая запишите в README.md:

  • какую команду вы запускали;
  • сообщение компилятора;
  • является ли проблема ошибкой компиляции или ошибкой запуска;
  • как вы её исправили.

Задание 6. Сборка

Соберите программу с явным именем.

Linux/macOS:

Окно терминала
go build -o student-card .
./student-card

Windows 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–70–4
Мини-проект0–4
Переносимость и отсутствие абсолютных путей0–2
Форматирование и объяснение ошибок0–2
Максимум16

Вопросы для защиты

  1. Что создаёт go mod init?
  2. Чем модуль отличается от пакета?
  3. Когда использовать go run, а когда go build?
  4. Почему Go запрещает неиспользуемые импорты?
  5. Что означают GOOS и GOARCH?
  6. Почему бинарный файл не следует включать в исходный проект?