Выбор ответа Senior Тесты, бенчмарки и модули обновлено
Minimal version selection
Вопрос
Ваш модуль требует lib v1.2.0, а зависимость A требует lib v1.4.0. Последняя версия lib v1.7.0. Какая версия попадёт в сборку?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: v1.4.0: максимум из требований. Go использует MVS: каждый require означает «не ниже».
Варианты ответа
- v1.7.0: самая свежая совместимая
- v1.2.0: версия корневого модуля важнее
- v1.4.0: максимум из требованийправильный ответ
- Ошибка конфликта версий при сборке
Разбор
Go использует MVS: каждый require означает «не ниже». Итоговая версия это максимум из требований по всему графу, и новее, чем кто-то просил, она не станет сама по себе. Поэтому сборка воспроизводима без lock-файла. Самую свежую берёт только явный go get lib@latest. Конфликта в пределах одной мажорной версии не бывает: v1 обязан быть обратно совместим.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Ещё по теме «Тесты, бенчмарки и модули»
- Minimal version selection как в Go modules
- Упрощённый go mod tidy: лишние и недостающие модули
- Сортировка версий по Semantic Versioning на Go
- Что выведет Go: табличный прогон без testing
- testing.B.Loop в Go 1.24
- Что показывает -benchmem
- t.Errorf и t.Fatalf
- Команда запуска тестов с детектором гонок