Quais são as implicações do uso da diretiva de versão "go" em um arquivo de módulo go (go.mod)

11

Dado o seguinte arquivo go.mod:

module foo

go 1.12

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

O que go 1.12indica? Isso impede a compilação do foomódulo em qualquer outra versão do Go? Ou é simplesmente um indicador da fooversão Go recomendada / necessária? Esta é uma diretiva que devemos atualizar sempre que uma nova versão do go for lançada (a cada 6 meses)?

mdwhatcott
fonte
3
Veja golang.org/doc/go1.12#modules
Cerise Limón
11
Também: golang.org/cmd/go/#hdr-The_go_mod_file : a versão do idioma esperado, definida pela diretiva go, determina quais recursos de idioma estão disponíveis ao compilar o módulo. Os recursos de idioma disponíveis nessa versão estarão disponíveis para uso. Os recursos de idioma removidos em versões anteriores ou adicionados em versões posteriores não estarão disponíveis. Observe que a versão do idioma não afeta as tags de construção, que são determinadas pela versão Go usada.
icza 2/10/19

Respostas:

5

Deve ser considerado na linha de uma versão Go mínima exigida. Se você criar com a mesma versão ou uma versão superior do Go, tudo ficará bem conforme prometido pela promessa de compatibilidade do Go 1 . Se você criar com uma versão inferior, haverá uma mensagem de erro se a construção falhar:

A diretiva go em um arquivo go.mod agora indica a versão do idioma usado pelos arquivos nesse módulo. Será definido para a versão atual (vá 1.12) se nenhuma versão existente estiver presente. Se a diretiva go de um módulo especificar uma versão mais recente que a cadeia de ferramentas em uso, o comando go tentará construir os pacotes independentemente e notará a incompatibilidade apenas se essa construção falhar. Notas da versão do Go 1.12

TehSphinX
fonte