Módulos Go com go mod
Inicialize módulos com go.mod e go.sum
Módulos Go com go mod é uma aula grátis de Go Academy no CoddyKit. Esta é a aula 2 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Go Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Go Academy inclui 4 aulas no total.
O que é um módulo Go?
Um módulo é uma coleção de pacotes Go com um arquivo go.mod na raiz. Os módulos são a unidade de distribuição e versionamento de código em Go:
// go.mod — created with: go mod init github.com/myuser/myapp
module github.com/myuser/myapp
go 1.21
require (
github.com/gin-gonic/gin v1.9.1
golang.org/x/sync v0.5.0
)go mod init
Inicialize um novo módulo com go mod init:
# In project directory:
go mod init github.com/myuser/myapp
# This creates go.mod:
# module github.com/myuser/myapp
# go 1.21
# The module path is the canonical import path prefix
# for all packages in this modulego.sum — verificação de integridade
go.sum registra as somas de verificação criptográficas de todas as dependências. Nunca o edite manualmente — os comandos go fazem sua manutenção:
# go.sum example entries:
github.com/gin-gonic/gin v1.9.1 h1:4idEAncQnU5cB7BeOkPtxjfCSye0AAm1R0RVIqJ+Jmg=
github.com/gin-gonic/gin v1.9.1/go.mod h1:hPrL7YrpYKXt5YId3A/Tnip5kqbEAP+KLuI3SUcPTeU=
# Commit go.sum to version control — it ensures reproducible buildsgo get — adicionando dependências
Utilize go get para adicionar ou atualizar dependências. Ele atualiza go.mod e go.sum:
# Add latest version
go get github.com/pkg/errors
# Add specific version
go get github.com/pkg/errors@v0.9.1
# Upgrade to latest patch release
go get -u=patch github.com/pkg/errors
# Remove unused dependency from go.mod
go mod tidygo mod tidy
go mod tidy adiciona os requisitos ausentes e remove os não utilizados de go.mod e go.sum. Execute-o depois de editar as importações:
# After adding/removing imports:
go mod tidy
# What it does:
# 1. Adds any missing module requirements
# 2. Removes requirements for packages no longer imported
# 3. Updates go.sum with needed checksums
# 4. Best practice: run before committingVersionamento de módulos com versionamento semântico
Os módulos Go utilizam versionamento semântico. Versões principais >= 2 exigem um sufixo no caminho:
// v1: github.com/pkg/errors
import "github.com/pkg/errors"
// v2+: module path includes major version
import "github.com/foo/bar/v2"
import "github.com/foo/bar/v3"
// go.mod:
// require github.com/foo/bar/v2 v2.3.1go mod vendor
O modo de fornecedor copia todas as dependências para um diretório local vendor/, permitindo compilações offline:
# Copy deps to vendor/
go mod vendor
# Build using vendor/
go build -mod=vendor ./...
# Useful for:
# - Air-gapped environments
# - Reproducible CI builds without network
# - Code review of dependenciesDiretiva replace
A diretiva replace em go.mod substitui um módulo por um caminho local ou por uma versão diferente — algo útil no desenvolvimento local:
module github.com/myapp
go 1.21
require github.com/mylib v1.0.0
// Use local fork during development:
replace github.com/mylib => ../mylib
// Replace with a specific version:
// replace github.com/mylib v1.0.0 => github.com/myfork v1.0.0go env GOPATH e GOMODCACHE
Principais variáveis de ambiente para módulos Go:
# Module cache location (default: ~/go/pkg/mod)
go env GOMODCACHE
# Proxy for downloading modules (default: proxy.golang.org)
go env GOPROXY
# Sum database for checksum verification
go env GONOSUMCHECK
# Disable module proxy (use direct)
export GOPROXY=directgo list e go mod graph
Examine as dependências do módulo com estes comandos:
# List all modules in the build
go list -m all
# Show module dependency graph
go mod graph
# Find which module provides a package
go list -m -json all | grep -A5 gin
# Check for available updates
go list -m -u allVerificação rápida
O que go mod tidy faz?
Recapitulação: módulos Go
Principais conceitos sobre módulos:
go mod initcria o módulo com um arquivogo.modgo.modlista o nome do módulo, a versão do Go e as dependênciasgo.sumarmazena as somas de verificação — faça o commit desse arquivogo getadiciona/atualiza dependências, ego mod tidyfaz a limpezareplacepara ramificações de desenvolvimento local- Versões principais v2+ exigem um sufixo no caminho
Perguntas Frequentes
A aula “Módulos Go com go mod” é grátis?
Sim — o texto completo de “Módulos Go com go mod” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Go Academy, atualize para CoddyKit PRO. O curso de Go Academy inclui 4 aulas no total.
O que vou aprender em “Módulos Go com go mod”?
Inicialize módulos com go.mod e go.sum Você pratica Go Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Go Academy?
Nenhuma experiência prévia é necessária. Go Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 2 de 4.
Quanto tempo leva a aula “Módulos Go com go mod”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Go Academy?
Sim. Cada aula de Go Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Pacotes: organizando código Go
- Módulos Go com go mod
- Adicionando dependências externas
- Pacotes internos e workspaces