0Pricing
Go Academy · Aula

Adicionando dependências externas

go get, versionamento e cache de módulos

Adicionando dependências externas é uma aula grátis de Go Academy no CoddyKit. Esta é a aula 3 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.

Encontrando pacotes

O principal recurso para encontrar pacotes Go é o pkg.go.dev. Pesquise pacotes, leia a documentação e veja exemplos de uso:

# Search and explore at https://pkg.go.dev

# Popular packages:
# github.com/gin-gonic/gin        — HTTP framework
# github.com/stretchr/testify     — test assertions
# golang.org/x/sync               — extended sync primitives
# github.com/spf13/cobra          — CLI framework
# github.com/jackc/pgx/v5         — PostgreSQL driver

go get: adicionando uma dependência

Utilize go get para adicionar uma dependência. Ele baixa o módulo e atualiza go.mod e go.sum:

# Add latest version
go get github.com/stretchr/testify

# Add specific version
go get github.com/stretchr/testify@v1.8.4

# Add a pre-release version
go get github.com/foo/bar@main

# go get updates go.mod:
# require github.com/stretchr/testify v1.8.4

Utilizando a dependência

Depois de executar go get, importe e utilize o pacote normalmente:

package main

import (
    "fmt"
    "github.com/stretchr/testify/assert"
    "testing"
)

func TestAdd(t *testing.T) {
    assert.Equal(t, 4, 2+2, "math should work")
    fmt.Println("assertion done")
    _ = assert.New // suppress unused import
}

go mod download

Baixe previamente todas as dependências listadas em go.mod para o cache de módulos:

# Download all deps from go.mod
go mod download

# Download specific module
go mod download github.com/gin-gonic/gin@v1.9.1

# Useful for:
# - Docker layer caching (copy go.mod/go.sum first, then download)
# - Pre-warming CI cache
# - Offline development setup

Seleção de versões semânticas: MVS

Go utiliza a Seleção da Versão Mínima (MVS): ele sempre escolhe a versão mínima exigida que satisfaz todas as dependências. Não há atualizações principais automáticas:

# If A requires gin v1.9.0
# and B requires gin v1.9.1
# MVS selects v1.9.1 (minimum that satisfies both)

# To upgrade ALL dependencies to latest minor/patch:
go get -u ./...

# To upgrade specific package:
go get -u github.com/gin-gonic/gin

go mod why — explicando dependências

Descubra por que um módulo é necessário na sua compilação:

# Why is encoding/json needed?
go mod why encoding/json

# Why is golang.org/x/net needed?
go mod why golang.org/x/net

# Output shows the import chain:
# github.com/myapp
# github.com/gin-gonic/gin
# golang.org/x/net

go mod vendor para compilações reproduzíveis

O uso de fornecedores fixa todas as dependências no seu repositório para obter compilações reproduzíveis:

# Vendor all deps
go mod vendor

# Build only from vendor (no network)
go build -mod=vendor ./...

# Dockerfile pattern:
# COPY go.mod go.sum ./
# RUN go mod download
# COPY . .
# RUN go build ...

Módulos privados com GONOSUMCHECK e GOPRIVATE

Configure o Go para módulos privados hospedados em servidores internos:

# Tell Go not to use proxy/sumdb for private modules
export GOPRIVATE=github.com/mycompany/*
export GONOSUMCHECK=github.com/mycompany/*

# Or in go env:
go env -w GOPRIVATE=github.com/mycompany/*

# For enterprise Go proxy:
export GOPROXY=https://proxy.mycompany.com,direct

go clean -modcache

Limpe o cache de módulos para forçar o novo download de todas as dependências:

# Clear entire module cache
go clean -modcache

# Clear cache for specific version
go clean -modcache github.com/gin-gonic/gin@v1.9.1

# Useful when:
# - Cache is corrupted
# - Testing with a fresh environment
# - Disk space cleanup

Verificando vulnerabilidades: govulncheck

O verificador oficial de vulnerabilidades do Go verifica se suas dependências apresentam CVEs conhecidas:

# Install govulncheck
go install golang.org/x/vuln/cmd/govulncheck@latest

# Scan your module
govulncheck ./...

# Output example:
# Vulnerability #1: GO-2023-1234
# github.com/foo/bar v1.2.3
# Fixed in: v1.2.4
# Suggestion: go get github.com/foo/bar@v1.2.4

Verificação rápida

Qual comando adiciona uma versão específica de uma dependência ao seu módulo?

Recapitulação: dependências externas

Resumo:

  • go get pkg@version adiciona dependências
  • Go utiliza MVS — a versão mínima que satisfaz todos os requisitos
  • go mod tidy limpa as dependências não utilizadas
  • go mod vendor é usado para compilações offline totalmente reproduzíveis
  • Utilize GOPRIVATE para módulos privados
  • Execute govulncheck para encontrar vulnerabilidades

Perguntas Frequentes

A aula “Adicionando dependências externas” é grátis?

Sim — o texto completo de “Adicionando dependências externas” é 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 “Adicionando dependências externas”?

go get, versionamento e cache de módulos 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 3 de 4.

Quanto tempo leva a aula “Adicionando dependências externas”?

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