Экосистема
Пакетный менеджер, тестирование, линтеры, структура проектов и т.д
Пакетный менеджер
Go Modules (go mod) - это система управления зависимостями, встроенная в язык Go с версии 1.11 и выше. Go Modules упрощает управление зависимостями, обеспечивает версионирование и облегчает совместную работу над проектами. Он также обеспечивает возможность воспроизводимой сборки проекта и упрощает интеграцию с другими инструментами разработки. Вот основы использования Go Modules:
- Инициализация модуля: Чтобы начать использовать Go Modules, нужно выполнить команду
go mod init
в корневом каталоге проекта. Это создаст файлgo.mod
, в котором будут записаны зависимости проекта. - Управление зависимостями: Go Modules использует явное указание версий зависимостей. Можно добавить новую зависимость с
помощью команды
go get
, напримерgo get github.com/example/package@v1.2.3
. Go Modules автоматически загрузит указанную версию и запишет ее в файле go.mod. - Версионирование зависимостей: В файле
go.mod
указываются версии зависимостей, а также правила для выбора версий при разрешении зависимостей. Можно использовать конкретные версии, диапазоны версий или символ latest для самой новой версии. - Обновление зависимостей: Go Modules предоставляет команду
go get -u
для обновления зависимостей до последних версий. При обновлении зависимостей файл go.mod будет автоматически обновлен с учетом новых версий. - Версионирование модуля: В файле
go.mod
указывается версия самого модуля. При каждом изменении зависимостей или модуля, версия модуля будет автоматически обновляться.
go mod tidy
Команда go mod tidy
является одной из команд Go Modules и используется для упорядочения и обновления файлов go.mod
и go.sum
, основанных на фактическом использовании зависимостей в проекте. Команда go mod tidy полезна при
упорядочивании и обновлении файлов go.mod и go.sum для соответствия фактическому использованию зависимостей в проекте.
Это помогает поддерживать эти файлы актуальными и устраняет неиспользуемые зависимости, упрощая управление зависимостями
в проекте.
Вот некоторая информация о команде go mod tidy
:
Удаление неиспользуемых зависимостей: Когда вы выполняете go mod tidy
, Go Modules анализирует фактическое
использование зависимостей в проекте и удаляет из файла go.mod
записи о зависимостях, которые больше не используются.
Это помогает очистить файл go.mod
от лишних записей и упростить управление зависимостями.
Обновление версий зависимостей: Команда go mod tidy
также обновляет версии зависимостей в файле go.mod
на основе
фактического использования. Если в проекте используются новые версии зависимостей, команда go mod tidy
автоматически
обновит записи в файле go.mod, чтобы отразить актуальные версии.
Обновление хэшей зависимостей: При выполнении go mod tidy
также обновляется файл go.sum
, который содержит хэши всех
зависимостей проекта. Если версии зависимостей изменяются или обновляются, go mod tidy
обновляет соответствующие хэши
в файле go.sum
.
Тестирование
Тесты в Go пишутся с использованием пакета testing
. Тестовые функции должны начинаться с префикса "Test" и принимать
аргумент типа *testing.T
.
Для запуска тестов можно использовать команду go test
в директории проекта. Она автоматически находит и выполняет все
тестовые функции.
В тестовых функциях можно использовать функции t.Errorf
и t.Fail
для вывода ошибок и отметки теста как неудачного.
Также популярные сторонние библиотеки testify и gocheck.
Бенчмарки:
Бенчмарки в Go пишутся с использованием пакета testing
и префикса Benchmark
для названия функций. Они принимают
аргумент типа *testing.B
.
Бенчмарки позволяют измерить производительность кода и сравнить различные реализации. Они выполняются несколько раз,
чтобы получить усредненные результаты.
Для запуска бенчмарков можно использовать команду go test
с флагом -bench
, например: go test -bench ..
Результаты бенчмарков выводятся в консоль и показывают среднее время выполнения и количество операций в секунду.
Использование тестов и бенчмарков помогает обеспечить надежность и производительность вашего кода. Они позволяют
автоматически проверить правильность работы кода и сравнить эффективность различных подходов.
Библиотеки и фреймворки
- Gin - минималистичный и быстрый фреймворк для веб-приложений.
- Echo - легковесный и быстрый веб-фреймворк для Go.
- Gorm - ORM для Go с поддержкой MySQL, PostgreSQL и SQLite.
- Cobra - библиотека для создания мощных CLI-интерфейсов.
- Viper - библиотека для работы с конфигурационными файлами различных форматов.
- Logrus - популярный логгер с поддержкой различных уровней логирования.
- testify - набор инструментов для модульного тестирования в Go.
- gRPC - высокопроизводительный RPC-фреймворк.
- govalidator - библиотека для валидации входных данных в Go.
- Fiber - быстрый и экспрессивный веб-фреймворк для Go.
- Mux - мощный HTTP-маршрутизатор и диспетчер запросов.
- JWT-go - библиотека для работы с JSON Web Token (JWT).
- sqlx - расширение для пакета database/sql для упрощения работы с SQL.
- go-sqlmock - инструмент для создания мок-объектов базы данных для тестирования SQL запросов.
- golang-migrate - инструмент для управления миграциями базы данных.
Дополнительно: