Выбор ответа Middle Тесты, бенчмарки и модули обновлено

Мажорная версия v2 в модулях Go

Вопрос

Как правильно выпустить несовместимую версию 2 библиотеки github.com/acme/lib?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Сменить путь на github.com/acme/lib/v2 и тег v2.0.0. Правило импортной совместимости: разные мажорные версии это разные пути импорта, поэтому v1 и v2 могут сосуществовать в одной сборке.

Варианты ответа

  1. Поставить тег v2.0.0, путь модуля оставить прежним
  2. Создать ветку v2, go get сам найдёт её по имени
  3. Указать go 2 в go.mod и поставить тег v2.0.0
  4. Сменить путь на github.com/acme/lib/v2 и тег v2.0.0правильный ответ

Разбор

Правило импортной совместимости: разные мажорные версии это разные пути импорта, поэтому v1 и v2 могут сосуществовать в одной сборке. Тег без смены пути даст +incompatible или ошибку. Ветка без суффикса пути ничего не решит. Директива go задаёт версию языка, а не модуля.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.