Які наслідки використання директиви версії “go” у файлі модуля go (go.mod)


11

Враховуючи такий файл go.mod:

module foo

go 1.12

require (
    github.com/bar/baz v1.0.0
    github.com/rat/cat v1.0.0
)

Що go 1.12вказує? Чи заважає це компілювати fooмодуль проти будь-якої іншої версії Go? Або це просто показник fooрекомендованої / потрібної версії Go? Це директива, яку ми повинні оновлювати щоразу, коли виходить нова версія переходу (кожні 6 місяців)?



1
Також: golang.org/cmd/go/#hdr-The_go_mod_file : Очікувана мовна версія, встановлена ​​директивою go, визначає, які мовні функції доступні під час компіляції модуля. Мовні функції, доступні в цій версії, будуть доступні для використання. Мовні функції, вилучені в попередніх версіях або додані в пізніших версіях, будуть недоступні. Зауважте, що мовна версія не впливає на теги збірки, які визначаються використовуваним випуском Go.
icza

Відповіді:


5

Це слід розглядати відповідно до мінімально необхідної версії Go. Якщо ви будуєте з тією ж або більш високою версією Go, все має бути добре, як обіцяно обіцянками про сумісність Go 1 . Якщо ви будуєте з нижчою версією, якщо збірка не вдасться, з’явиться повідомлення про помилку:

Директива go у файлі go.mod тепер вказує версію мови, що використовується файлами в цьому модулі. Він буде встановлений у поточному випуску (перейти 1.12), якщо не існує існуючої версії. Якщо директива go для модуля вказує версію, більш нову, ніж використовувана мережа інструментів, команда go спробує створити пакети незалежно від цього і відмітить невідповідність лише у тому випадку, якщо ця збійка не вдалася. Перейдіть 1.12 Примітки до випуску

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.