Quando estamos desenvolvendo projetos com a linguagem Go, muitas vezes nos deparamos com a necessidade de alternar entre diferentes versões do Go — seja para manter compatibilidade com projetos legados, testar novas versões, ou apenas seguir a especificação de uma stack definida por um time.
Assim como temos ferramentas como o nvm
para Node.js e o pyenv
para Python, o Go também tem sua própria alternativa: o GVM — Go Version Manager.
O que é o GVM?
O GVM é uma ferramenta em linha de comando que permite instalar e gerenciar múltiplas versões do Go no mesmo ambiente. Com ele, é possível alternar facilmente entre versões, instalar builds específicos e isolar ambientes de desenvolvimento.
Por que usar o GVM?
- ✅ Alternância rápida entre versões do Go
- ✅ Instalação de versões legadas ou betas
- ✅ Isolamento de ambientes de desenvolvimento
- ✅ Controle preciso sobre o ambiente de build
Se você trabalha em múltiplos projetos com requisitos diferentes de versão, o GVM pode te poupar muito tempo e dor de cabeça.
Como instalar o GVM
A instalação do GVM é simples, mas requer alguns pré-requisitos:
1. Instale dependências (exemplo para Ubuntu/Debian)
sudo apt-get update sudo apt-get install curl git make binutils bison gcc
2. Instale o GVM
bash < <(curl -s -S -L https://raw.githubusercontent.com/moovweb/gvm/master/binscripts/gvm-installer)
Depois disso, feche e reabra o terminal, ou carregue o GVM com:
source ~/.gvm/scripts/gvm
Usando o GVM
Instalar uma versão específica do Go
gvm install go1.20
Listar versões disponíveis
gvm listall
Lista versões instaladas
gvm list
Usar uma versão instalada
gvm use go1.20 --default
Com a flag --default
, você define essa como a versão padrão para o terminal.
Extras úteis
Você também pode criar ambientes isolados com:
gvm pkgset create meu-projeto gvm pkgset use meu-projeto
Isso ajuda a separar dependências entre projetos diferentes, algo especialmente útil em times grandes ou CI/CD.
Conclusão
O GVM é uma ferramenta poderosa que simplifica muito a vida de quem precisa trabalhar com múltiplas versões do Go. Se você ainda não utiliza, vale a pena experimentar — principalmente se você alterna entre projetos com requisitos distintos.
Se quiser saber mais ou ver o código-fonte, o projeto está disponível no GitHub: