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

Minimal version selection

Вопрос

Ваш модуль требует lib v1.2.0, а зависимость A требует lib v1.4.0. Последняя версия lib v1.7.0. Какая версия попадёт в сборку?

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

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

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

Коротко

Правильный ответ: v1.4.0: максимум из требований. Go использует MVS: каждый require означает «не ниже».

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

  1. v1.7.0: самая свежая совместимая
  2. v1.2.0: версия корневого модуля важнее
  3. v1.4.0: максимум из требованийправильный ответ
  4. Ошибка конфликта версий при сборке

Разбор

Go использует MVS: каждый require означает «не ниже». Итоговая версия это максимум из требований по всему графу, и новее, чем кто-то просил, она не станет сама по себе. Поэтому сборка воспроизводима без lock-файла. Самую свежую берёт только явный go get lib@latest. Конфликта в пределах одной мажорной версии не бывает: v1 обязан быть обратно совместим.

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

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