Introdução
O Go 1.24 traz uma das atualizações mais impactantes para o ecossistema Go nos últimos anos: o novo sistema go tool. Essa mudança simplifica a maneira como os projetos Go gerenciam ferramentas como mockgen, oapi-codegen e golangci-lint, tornando a gestão de dependências de ferramentas mais organizada, rastreável e versionada.
Antes do Go 1.24, gerenciar ferramentas era um processo manual e desorganizado. Os desenvolvedores precisavam usar go install, criar arquivos tools.go ou manter scripts externos para acompanhar ferramentas específicas do projeto. Isso frequentemente levava a um bloat na árvore de dependências, conflitos de versão e inconsistências entre ambientes de desenvolvimento.
Agora, com go tool, é possível instalar, rastrear e executar ferramentas dentro do sistema de módulos do Go, garantindo dependências específicas para cada projeto sem afetar a instalação global.
Antes do Go 1.24: O Problema do Gerenciamento de Ferramentas
1. Instalar ferramentas globalmente com go install
go install golang.org/x/tools/cmd/goimports@latest- As ferramentas não eram rastreadas no 
go.mod, causando inconsistências entre ambientes. - Cada desenvolvedor precisava instalar as ferramentas manualmente, sem garantia de que estava usando a versão correta.
 
2. Usar um arquivo tools.go
//go:build tools
// +build tools
package tools
import _ "golang.org/x/tools/cmd/goimports"- Isso garantia que as ferramentas fossem adicionadas ao 
go.mod, mas: - Executar ferramentas via 
go runera lento, pois o Go recompilava a ferramenta sempre que era executada. - Poluía a árvore de dependências, adicionando ferramentas como dependências indiretas.
 
3. Criar um Makefile ou scripts personalizados
TOOLS = golang.org/x/tools/cmd/goimports
.PHONY: tools
tools:
    go install $(TOOLS)- Exigia instalação e controle manuais.
 
O go tool do Go 1.24: A Solução
O Go 1.24 introduz suporte nativo para dependências de ferramentas.
Como Funciona?
- Instalar ferramentas com 
go get -tool:go get -tool golang.org/x/tools/cmd/goimports - Executar ferramentas com 
go tool:go tool goimports --help - Listar todas as ferramentas instaladas:
go tool - Descobrir o local da ferramenta no sistema:
go tool -n goimports 
Como o go.mod Gerencia Ferramentas
go 1.24
tool golang.org/x/tools/cmd/goimports
require (
    golang.org/x/mod v0.22.0 // indirect
    golang.org/x/tools v0.29.0 // indirect
)Migrando para go tool
Exemplo 1: Migrando mockgen
Antes do Go 1.24:
go install go.uber.org/mock/mockgen@latest
mockgen -source=your_interface.go -destination=mocks/your_interface_mock.goDepois do Go 1.24:
go get -tool go.uber.org/mock/mockgen
go tool mockgen -source=your_interface.go -destination=mocks/your_interface_mock.goExemplo 2: Migrando oapi-codegen
Antes do Go 1.24:
//go:generate go run github.com/oapi-codegen/oapi-codegen/v2/cmd/oapi-codegen --config=config.yaml openapi.yamlDepois do Go 1.24:
//go:generate go tool github.com/oapi-codegen/oapi-codegen/v2/cmd/oapi-codegen --config=config.yaml openapi.yamlObs: mockgen também pode ser usado com generate
Comparação de Performance
| Benchmark | Antigo (go run) | Novo (go tool) | 
|---|---|---|
| Primeira execução | 50.29s | 55.05s | 
| Execuções subsequentes | 1.04s | 0.59s | 
Conclusão: Vale a Pena Usar go tool?
Sim, se você:
- Precisa de versões específicas de ferramentas para cada projeto.
 - Quer um ambiente de desenvolvimento 100% rastreável e versionado.
 - Deseja execução mais rápida de ferramentas.
 
Prefira go install se:
- Usa ferramentas globalmente em vários projetos.
 - Precisa de ferramentas não escritas em Go.
 
Próximos Passos
- Go 1.24 está previsto para fevereiro de 2025. Atualize sua versão e experimente o 
go tool. - Migre suas ferramentas (
mockgen,oapi-codegen,goimports). - Compartilhe suas experiências!
 
That’s all folks! Até a próxima.







