Шпаргалка по модулям в Golang

Шпаргалка по модулям в Golang
1 хв. читання
19 травня 2021

Дана стаття, це коротка шпаргалка по управлінню модулями в Go. Ця стаття являється перекладом цієї замітки Go modules cheat sheet

Управління залежностями

Додати або оновити залежність

go get -d github.com/path/to/module  

Використовувати конкренту версію

go get -d github.com/dep/two/v2@v2.1.0

Використовувати конкретну гілку

go get -d github.com/dep/commit@branch

Оновити всі модулі у вказаному каталозі

go get -d -u ./...                  

Видалити залежність

go get -d github.com/dep/legacy@none

Корисні команди

Улаштувати або почистити go.mod та go.sum

go mod tidy 

Завантажити залежності в кеш модулів

go mod download

Ініціалізувати новий модуль

go mod init github.com/path/to/module 

Перевірити чому вказаний модуль є залежністю

go mod why -m github.com/path/to/module

Зібрати та встановити бінарний файл

go install github.com/path/to/bin@latest

Анатомія go.mod

Шпаргалка по модулям в Golang

Вибір мінімальної версії (MVS)

Для побудови програми, компілятору go необхідно знати, які саме залежності потрібні та які версії використовувати.

Go використовує MVS (вибір мінімальної версії) як простий та передбачуваний спосіб для вирішення яку версію використовувати.

Це працює наступним чином:

  1. Модуль з якого ви запускаєте програму називається “main module”
  2. Пошук всіх залежностей які необхідні основному модулю (рекурсивно, використовуючи залежності файлів go.mod)
  3. Для кожної залежності використовується найвища версія прямо вказана в  будь-якому go.mod файлі

Приклад

Шпаргалка по модулям в Golang

В цьому прикладі основний модуль залежить від A 1.0 і B 2.1.

Оскільки B 2.1 залежить від A 1.1, ця версія модуля A буде використовуватися

Оскільки A 1.1 використовується, вона також витягує C 1.1

Фінальний список залежностей

  • A 1.1
  • B 2.1
  • C 1.1
Помітили помилку? Повідомте автору, для цього достатньо виділити текст з помилкою та натиснути Ctrl+Enter
Коментарі (0)

    Ще немає коментарів

Щоб залишити коментар необхідно авторизуватися.

Вхід / Реєстрація