0Pricing
Go Academy · Aula

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 module

go.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 builds

go 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 tidy

go 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 committing

Versionamento 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.1

go 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 dependencies

Diretiva 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.0

go 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=direct

go 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 all

Verificação rápida

O que go mod tidy faz?

Recapitulação: módulos Go

Principais conceitos sobre módulos:

  • go mod init cria o módulo com um arquivo go.mod
  • go.mod lista o nome do módulo, a versão do Go e as dependências
  • go.sum armazena as somas de verificação — faça o commit desse arquivo
  • go get adiciona/atualiza dependências, e go mod tidy faz a limpeza
  • replace para 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

  1. Pacotes: organizando código Go
  2. Módulos Go com go mod
  3. Adicionando dependências externas
  4. Pacotes internos e workspaces
← Voltar para Go Academy