¿Cuáles son las implicaciones de usar la directiva de versión "go" dentro de un archivo de módulo go (go.mod)

11

Dado el siguiente archivo go.mod:

module foo

go 1.12

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

¿Qué go 1.12indica el? ¿Evita compilar el foomódulo contra cualquier otra versión de Go? ¿O es simplemente un indicador de la fooversión Go recomendada / requerida? ¿Es esta una directiva que deberíamos actualizar cada vez que se lanza una nueva versión de go (cada 6 meses)?

mdwhatcott
fuente
3
Ver golang.org/doc/go1.12#modules
Cerise Limón el
1
También: golang.org/cmd/go/#hdr-The_go_mod_file : la versión de idioma esperada, establecida por la directiva go, determina qué características de idioma están disponibles al compilar el módulo. Las funciones de idioma disponibles en esa versión estarán disponibles para su uso. Las funciones de idioma eliminadas en versiones anteriores o agregadas en versiones posteriores no estarán disponibles. Tenga en cuenta que la versión de idioma no afecta a las etiquetas de compilación, que están determinadas por la versión Go que se utiliza.
icza

Respuestas:

5

Debe considerarse en la línea de una versión mínima requerida de Go. Si compila con la misma versión o una versión superior de Go, todo debería estar bien según lo prometido por la promesa de compatibilidad Go 1 . Si compila con una versión inferior, habrá un mensaje de error si falla la compilación:

La directiva go en un archivo go.mod ahora indica la versión del lenguaje utilizado por los archivos dentro de ese módulo. Se establecerá en la versión actual (vaya a 1.12) si no hay una versión existente. Si la directiva go para un módulo especifica una versión más nueva que la cadena de herramientas en uso, el comando go intentará construir los paquetes independientemente, y notará la falta de coincidencia solo si esa compilación falla. Ir 1.12 Notas de la versión

TehSphinX
fuente