O que é um módulo?

Um módulo é uma coleção de pacotes Go relacionados. Sendo uma unidade de código(s)-fonte versionável e intercambiavel.

circle-info

Desde Go 1.16 (fevereiro de 2021), módulos são obrigatórios e o modo padrão do Go. A antiga abordagem baseada em GOPATH foi descontinuada.

Módulos tem 2 principais objetivos:

  1. Manter os requisitos especificos das dependências.

  2. Criar builds reproduziveis.

Na maioria das vezes, um repositório de controle de versão, como o GIT, contém exatamente um módulo definido na raiz do repositório.

circle-exclamation

Resumindo a relação entre repositórios, módulos e pacotes:

  • Um repositório contém um ou mais módulos.

  • Cada módulo contém um ou mais pacotes Go.

  • Cada pacote consiste de um ou mais arquivos Go em um único diretório.

Módulos devem ser semanticamente versionados de acordo com semverarrow-up-right, geralmente na forma v(major).(Minor).(Patch), como v0.1.0, v1.2.3 ou v1.5.0-rc.1. O v inicial é obrigatório.

Se estiver usando GIT, a versão estará associada as tagsarrow-up-right do repositório.

circle-info

Módulos substituem a antiga abordagem baseada em GOPATH para especificar quais arquivos de origem são usados em uma determinada compilação.

Last updated