6 вопросов
Система модулей Go: go.mod, go.sum, go mod tidy, vendor. Функция init(), экспорт через заглавную букву, организация кода в пакеты.
go mod init? 🟢 Лёгкий
▶
go mod init example.com/myapp создаёт файл go.mod, определяющий модуль и его зависимости. Модули - стандартная система управления зависимостями с Go 1.11+.
Подробнее →Go кеширует скачанные модули в $GOPATH/pkg/mod (по умолчанию ~/go/pkg/mod). Это глобальный кеш, общий для всех проектов. vendor/ - опциональная локальная копия.
Подробнее →go mod tidy? 🟡 Средний
▶
go mod tidy анализирует импорты в коде, добавляет отсутствующие зависимости в go.mod и удаляет неиспользуемые. Также обновляет go.sum. Рекомендуется запускать после добавления/удаления импортов.
Подробнее →init()? 🟡 Средний
▶
init() выполняется автоматически при импорте пакета, до main(). Используется для инициализации: регистрация драйверов, настройка глобальных переменных. Не принимает аргументов и не возвращает значений.
Подробнее →init()? 🔴 Сложный
▶
В одном файле и пакете может быть несколько init(). Они выполняются в порядке объявления (внутри файла) и в алфавитном порядке файлов (внутри пакета).
Подробнее →В Go нет ключевых слов public/private. Экспортируемость определяется регистром: MyFunc - публичная, myFunc - приватная (видна только внутри пакета).
Подробнее →