Выбор ответа Middle Тесты, бенчмарки и модули обновлено
Мажорная версия v2 в модулях Go
Вопрос
Как правильно выпустить несовместимую версию 2 библиотеки github.com/acme/lib?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Сменить путь на github.com/acme/lib/v2 и тег v2.0.0. Правило импортной совместимости: разные мажорные версии это разные пути импорта, поэтому v1 и v2 могут сосуществовать в одной сборке.
Варианты ответа
- Поставить тег v2.0.0, путь модуля оставить прежним
- Создать ветку v2, go get сам найдёт её по имени
- Указать
go 2в go.mod и поставить тег v2.0.0 - Сменить путь на
github.com/acme/lib/v2и тег v2.0.0правильный ответ
Разбор
Правило импортной совместимости: разные мажорные версии это разные пути импорта, поэтому v1 и v2 могут сосуществовать в одной сборке. Тег без смены пути даст +incompatible или ошибку. Ветка без суффикса пути ничего не решит. Директива go задаёт версию языка, а не модуля.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 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
- Команда запуска тестов с детектором гонок