> For the complete documentation index, see [llms.txt](https://alexrios.gitbook.io/gomodules/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://alexrios.gitbook.io/gomodules/novos-conceitos/modules.md).

# Módulos

Um módulo é uma coleção de pacotes go relacionados que estão versionados juntos, em unidade.

Módulos registram com precisão os requisitos das dependências e criam *builds* reproduzíveis.

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

Em suma, a relação entre repositórios, módulos e pacotes se dá da seguinte forma:

* Um repositório contém um ou mais módulos Go.
* Cada módulo contém um ou mais pacotes Go.
* Cada pacote go consiste em um ou mais arquivos fonte Go em um diretório.

Módulos precisam ser versionados semanticamente de acordo com `semver`, geralmente na forma `v(major).(minor).(patch)`, como `v0.1.0`, `v1.2.3`, or `v1.5.0-rc.1`. O "v" inicial é obrigatório. Se estiver utilizando *git*, adicione *tags* de versão aos seus *commits*. É possível utilizar repositórios privados, ver [Como usar libs privadas?](/gomodules/tutoriais/como-usar-libs-privadas-no-github-actions.md).
