Экосистема

Пакетный менеджер, тестирование, линтеры, структура проектов и т.д

Пакетный менеджер

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 - инструмент для управления миграциями базы данных.

Дополнительно: