Go e REPL: como depurar sem console não quebrou minha carreira

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Introdução: "E cadê meu console?"

\n\n

Você já se pegou pensando: "Agora seria bom executar rapidamente uma linha de código, testar uma hipótese, experimentar a sintaxe — e depois continuar escrevendo"? Se você veio para o Go vindo do Python, JavaScript ou Ruby, essa questão é ainda mais relevante. Lá existe REPL (Read-Eval-Print Loop) — um ambiente interativo onde o código é executado linha por linha. Você escreve 2 + 2 — e vê imediatamente 4. Que beleza!

\n\n

Mas aí você abre o Go, escreve go run main.go, compila... e percebe: a mágica não existe. Ou será que existe? A pergunta "Does Go provide a REPL?" no Stack Overflow acumulou milhares de visualizações e dezenas de comentários. As pessoas ficam confusas, decepcionadas e, às vezes, até abandonam a linguagem.

\n\n

Neste artigo, vou explicar por que o Go não tem um REPL embutido, quais ferramentas podem substituí-lo e — o mais importante — como evitar erros típicos que transformam o aprendizado de Go em uma dor de cabeça. Vamos lá!

\n\n

Por que o Go não tem REPL? (E isso não é um bug, é uma feature)

\n\n

O primeiro erro de um iniciante é considerar a ausência de REPL uma deficiência da linguagem. Na verdade, é uma decisão arquitetural. Go é uma linguagem compilada e fortemente tipada. REPL pressupõe interpretação ou compilação JIT, o que contradiz a filosofia do Go: "simplicidade, velocidade, previsibilidade".

\n\n

Quando você escreve em um REPL no Python, o interpretador executa o código linha por linha. Em Go, cada programa é primeiro analisado, compilado em código de máquina e depois executado. Isso proporciona:

\n
    \n
  • Velocidade de execução relâmpago (sem surpresas em produção);
  • \n
  • Verificação rigorosa de tipos em tempo de compilação (menos erros em tempo de execução);
  • \n
  • Menos mágica (você sabe exatamente o que seu código faz).
  • \n
\n\n

Mas e os experimentos rápidos? Será que você precisa criar um arquivo main.go toda vez? Spoiler: não.

\n\n

Top 3 erros ao trabalhar sem REPL (e como evitá-los)

\n\n

Erro nº 1: "Vou escrever tudo em um único arquivo e executar com go run"

\n\n

Esse é o equívoco mais comum. Iniciantes criam um arquivo gigante main.go, colocam todo o código lá, testam com go run e depois se surpreendem quando o compilador reclama de variáveis ou imports não utilizados.

\n\n

Como evitar: Use o Go Playground (play.golang.org). É uma ferramenta web oficial que funciona como um mini-REPL. Você escreve o código, clica em "Run" — e vê o resultado. Sim, não é entrada linha por linha, mas para testar sintaxe, algoritmos ou pequenos trechos de código é ideal.

\n\n

Exemplo:

\n
package main\n\nimport "fmt"\n\nfunc main() {\n    message := "Hello, Go REPL!"\n    fmt.Println(message)\n}
\n

Executou — obteve a saída. Rápido, limpo, sem arquivos extras.

\n\n

Erro nº 2: "REPL em Go é só go run sem salvar"

\n\n

Alguns tentam usar go run como REPL: escrevem código diretamente no terminal com echo ou cat. Isso funciona apenas para exemplos triviais, mas assim que aparecem imports, pacotes ou erros de compilação — tudo quebra.

\n\n

Como evitar: Instale o gore — é quase um REPL completo para Go. Ele permite executar expressões, declarar variáveis e até importar pacotes em modo interativo.

\n\n

Instalação:

\n
go install github.com/motemen/gore@latest
\n

Execução:

\n
gore
\n

Exemplo de uso:

\n
gore> 2 + 2\n4\ngore> import "fmt"\ngore> fmt.Println("Hello from gore!")\nHello from gore!
\n

Não é perfeito, mas muito próximo de um REPL clássico. O importante é lembrar que é uma ferramenta de terceiros e não suporta todos os recursos da linguagem (por exemplo, goroutines em modo interativo podem se comportar de forma inesperada).

\n\n

Erro nº 3: "Vou escrever testes no main() e executá-los com"

Blogs

Book Recommendations