Formatador de Go
Formate e embeleze código-fonte Go — indentação com tabs derivada da profundidade de chaves e parênteses, posicionamento obrigatório da chave de abertura na mesma linha, espaçamento não ambíguo de operadores e vírgulas, espaçamento de dois-pontos em literais compostos e ordenação opcional de importações da biblioteca padrão e de terceiros — mantendo strings `backtick` brutas e comentários byte a byte intactos.
Entrada
Opções de formatação
Saída
Mais formas de usar esta ferramenta
API REST
curl -X POST https://api.iotools.cloud/v1/tool/go-formatter \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"goInput": "package main\n\nimport (\n\"fmt\"\n\"os\"\n\"github.com/sp…",
"sortImports": "true"
}'Troque pela sua própria chave, da sua conta. Os campos da ferramenta viram o corpo da requisição — sem envelope.
Peça a um agente de IA
Use the IOTools `go-formatter` tool (Go Formatter) on this input:
YOUR_INPUT_HERECole isto em qualquer agente conectado ao servidor MCP do IOTools e depois adicione sua entrada.
Widget para incorporar
<iframe
src="https://iotools.cloud/embed/go-formatter/"
width="100%" height="520" frameborder="0" scrolling="no" loading="lazy"
title="Formatador de Go — iotools.cloud"
sandbox="allow-scripts allow-forms allow-same-origin allow-downloads allow-popups allow-popups-to-escape-sandbox"
allow="clipboard-write"
style="width:100%;border:1px solid #e5e7eb;border-radius:12px;overflow:hidden"></iframe>
<script src="https://iotools.cloud/embed.js" async></script>Coloque isso na sua própria página — grátis, sem chave, só um link de volta.
| Custo por chamada de API/MCP | A partir de 5 créditos |
|---|---|
| Precisa de mais créditos? | Ver preços |
Também disponível via
Guias
Cole código Go desorganizado e receba de volta código-fonte limpo e conforme ao gofmt — instantaneamente, no seu navegador. O Formatador de Go reindenta com tabs, move cada chave de abertura para a mesma linha do if/for/func/struct a que pertence, ajusta espaçamentos em torno de operadores e vírgulas, e pode ordenar e agrupar suas importações em blocos de biblioteca padrão e de terceiros — tudo isso deixando strings brutas `backtick` e comentários completamente intactos.
Por que tabs, e por que a chave nunca muda de lugar
Duas coisas sobre a formatação de Go não são realmente escolhas de estilo — são a convenção da própria linguagem. A indentação é sempre feita com tabs, nunca com espaços; esta ferramenta não oferece a opção de espaços, porque o gofmt também não oferece. E a chave de abertura permanece na mesma linha da palavra-chave que a possui: o Go realiza inserção automática de ponto e vírgula no fim de cada linha, então um { sozinho em uma linha pode mudar silenciosamente o significado do código, não apenas a aparência. Esta ferramenta sempre une uma chave deslocada de volta à linha anterior.
Como usar
Cole seu código-fonte Go ou envie um arquivo .go. Ative Ordenar e agrupar importações se quiser que o bloco import seja reorganizado em um grupo de biblioteca padrão e outro de terceiros, cada um ordenado alfabeticamente. Copie o resultado ou baixe-o como formatted.go. A formatação roda automaticamente enquanto você digita ou altera a opção.
O que é normalizado
- Indentação — tabs, a partir da profundidade de aninhamento de chaves e parênteses.
case/defaultrecuam um nível em relação ao corpo doswitch. - Posicionamento de chaves — uma linha só com
{é sempre unida à linha anterior. - Espaçamento de operadores — operadores binários não ambíguos recebem um espaço simples de cada lado:
:=,==,!=,<=,>=,&&,||,<<,>>,&^,=, e as formas de atribuição composta. - Espaçamento de vírgulas e ponto e vírgula — nenhum espaço antes, um espaço depois.
- Dois-pontos em literais compostos —
User{Name:"x"}viraUser{Name: "x"}, enquanto os dois-pontos de slices e índices permanecem justos (s[1:3]). Isto é uma desambiguação real, não um palpite: a ferramenta acompanha o tipo do colchete mais interno aberto em todo o arquivo, e só adiciona espaço quando esse colchete é{, nunca[. struct{,interface{e cabeçalhos de instrução sem parênteses (if x > 0{,for i := range xs{) recebem um espaço antes da chave, assim como assinaturas de função comofunc f() error{.- Ordenação de importações (opcional) — grupos de biblioteca padrão e de terceiros, cada um ordenado alfabeticamente e separado por uma linha em branco.
- Linhas em branco — reduzidas a no máximo uma seguida, nenhuma logo após
{ou logo antes de}, e exatamente uma inserida antes de umfunc/type/var/constde nível superior.
O que deliberadamente não mexe
+,-,*,&unários vs. binários, e o operador de canal<-(binário em um envio, um prefixo unário justo em um recebimento). Distingui-los exige análise sintática real, então o espaçamento original deles é preservado.- Quebra de linhas — nada é reorganizado para mais ou menos linhas do que você forneceu.
- Qualquer coisa dentro de uma string. Strings brutas
`...`são preservadas **byte a byte** — quebras de linha, indentação, chaves e dois-pontos inclusive — pois costumam conter SQL e templates. Tags de struct (`json:"name"`) também não são alteradas internamente. - Comentários. Comentários
//e/* */, inclusive comentários de bloco de várias linhas, são copiados sem alterações.
É igual ao gofmt?
Não — é um formatador de texto sem dependências que roda inteiramente no seu navegador, não um analisador real de Go. O gofmt constrói uma árvore sintática completa; esta ferramenta trabalha sobre texto tokenizado, o que resulta em tabs corretos, posicionamento correto de chaves e espaçamento sensato, sem precisar instalar o Go.
Meu código é privado?
Totalmente. Toda a formatação acontece localmente no seu navegador — seu código nunca é enviado a um servidor, registrado ou armazenado.