Пакеты и модули

8 вопросов

Система модулей Go: go.mod, go.sum, go mod tidy, vendor. Функция init(), экспорт через заглавную букву, организация кода в пакеты.

1 Что делает go mod init? 🟢 Лёгкий
Ответ: B) Инициализирует модуль Go

go mod init example.com/myapp создаёт файл go.mod, определяющий модуль и его зависимости. Модули - стандартная система управления зависимостями с Go 1.11+.

Подробнее →
2 Как сделать идентификатор экспортируемым? 🟢 Лёгкий
Ответ: B) Начать имя с заглавной буквы

В Go нет ключевых слов public/private. Экспортируемость определяется регистром: MyFunc - публичная, myFunc - приватная (видна только внутри пакета).

Подробнее →
3 Для чего нужен файл go.sum? 🟢 Лёгкий
Ответ: B) Хеши зависимостей для проверки целостности

go.sum содержит криптографические хеши (SHA-256) всех зависимостей. При go mod download хеши проверяются - если не совпадают, сборка прерывается. Защита от подмены зависимостей (supply chain attack). go.mod - список зависимостей, go.sum - их хеши.

Подробнее →
4 Где хранятся скачанные зависимости? 🟡 Средний
Ответ: B) В $GOPATH/pkg/mod

Go кеширует скачанные модули в $GOPATH/pkg/mod (по умолчанию ~/go/pkg/mod). Это глобальный кеш, общий для всех проектов. vendor/ - опциональная локальная копия.

Подробнее →
5 Что делает go mod tidy? 🟡 Средний
Ответ: B) Добавляет недостающие и убирает лишние зависимости

go mod tidy анализирует импорты в коде, добавляет отсутствующие зависимости в go.mod и удаляет неиспользуемые. Также обновляет go.sum. Рекомендуется запускать после добавления/удаления импортов.

Подробнее →
6 Что делает функция init()? 🟡 Средний
Ответ: B) Автоматически вызывается при загрузке пакета

init() выполняется автоматически при импорте пакета, до main(). Используется для инициализации: регистрация драйверов, настройка глобальных переменных. Не принимает аргументов и не возвращает значений.

Подробнее →
7 В каком порядке выполняются функции init() в Go-программе? 🟡 Средний
Ответ: B) Сначала init() всех импортированных пакетов (по графу зависимостей), затем текущий пакет; внутри пакета - по алфавиту имен файлов

init() вызываются после инициализации переменных пакета. Порядок: по графу импортов (зависимости первыми), внутри пакета - по алфавиту файлов, внутри файла - по порядку объявления.

Подробнее →
8 Можно ли в пакете несколько функций init()? 🔴 Сложный
Ответ: B) Да

В одном файле и пакете может быть несколько init(). Они выполняются в порядке объявления (внутри файла) и в алфавитном порядке файлов (внутри пакета).

Подробнее →
🧠Квиз 🏆Лидеры 🎯Собесед. 📖Вопросы 📚База зн.