Removendo espaços em Go: como eliminar caracteres extras de uma string

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

Problema familiar a todo desenvolvedor

\n\n

Imagine: você está escrevendo um parser de logs, processando entrada de usuário de um formulário ou preparando dados para uma API. As strings chegam com espaços extras no início e no final. Se não os remover — bugs, comparações quebradas, JSONs malformados e horas perdidas em debug. Este é um problema clássico que acumulou milhares de visualizações no Stack Overflow. Hoje vamos resolvê-lo em Go — rápido, elegante e sem surpresas.

\n\n

Neste guia, você aprenderá:

\n
    \n
  • Como usar a biblioteca padrão strings para remover espaços.
  • \n
  • Qual a diferença entre TrimSpace, TrimLeft e TrimRight.
  • \n
  • Como escrever sua própria função personalizada para caracteres whitespace não padrão.
  • \n
  • Como evitar armadilhas com Unicode e tabulação.
  • \n
\n\n

Vamos lá!

\n\n

Início rápido: strings.TrimSpace

\n\n

A maneira mais simples e popular de remover espaços de ambas as extremidades de uma string é usar a função strings.TrimSpace do pacote padrão strings. Ela remove todos os caracteres que Go considera "espaço em branco" (whitespace): espaços comuns, tabulações, quebras de linha, retornos de carro e até tabulações verticais.

\n\n

Veja como fica no código:

\n\n
package main\n\nimport (\n    "fmt"\n    "strings"\n)\n\nfunc main() {\n    raw := "   Olá, mundo!   \\n\\t"\n    cleaned := strings.TrimSpace(raw)\n    \n    fmt.Printf("Original: %q\\n", raw)\n    fmt.Printf("Limpa: %q\\n", cleaned)\n}\n
\n\n

Saída:

\n
Original: "   Olá, mundo!   \\n\\t"\nLimpa: "Olá, mundo!"\n
\n\n

Observe: %q em fmt.Printf exibe a string com sequências de escape — útil para depuração, permitindo ver caracteres ocultos.

\n\n

Quando usar: em 90% dos casos, isso é suficiente. Se você só precisa "limpar" a string de lixo nas bordas — use TrimSpace.

\n\n

Ajuste fino: TrimLeft e TrimRight

\n\n

Às vezes, é necessário remover espaços apenas à esquerda ou apenas à direita. Para isso, Go oferece strings.TrimLeft e strings.TrimRight. Mas há uma nuance: elas não funcionam com "caracteres whitespace" por padrão, mas com um conjunto de caracteres passado como argumento.

\n\n

Exemplo:

\n\n
package main\n\nimport (\n    "fmt"\n    "strings"\n)\n\nfunc main() {\n    s := "   \\t\\n   Hello   "\n    \n    // Remove apenas à esquerda (espaços, tabulações, quebras de linha)\n    left := strings.TrimLeft(s, " \\t\\n")\n    fmt.Printf("Esquerda: %q\\n", left)\n    \n    // Remove apenas à direita (apenas espaços)\n    right := strings.TrimRight(s, " ")\n    fmt.Printf("Direita: %q\\n", right)\n}\n
\n\n

Saída:

\n
Esquerda: "Hello   "\nDireita: "   \\t\\n   Hello"\n
\n\n

Importante: TrimLeft e TrimRight removem todos os caracteres do segundo argumento até encontrarem um caractere que não esteja na lista. Se você especificar apenas o espaço " ", a tabulação \\t permanecerá intocada.

\n\n

Análogo ao TrimSpace para um lado

\n\n

Se você precisa remover todos os whitespace apenas à esquerda ou apenas à direita, mas tem preguiça de listar todos os caracteres, pode escrever um pequeno wrapper:

\n\n
func trimLeftSpace(s string) string {\n    return strings.TrimLeft(s, " \\t\\n\\r\\v\\f")\n}\n\nfunc trimRightSpace(s string) string {\n    return strings.TrimRight(s, " \\t\\n\\r\\v\\f")\n}\n
\n\n

Ou, para quem gosta de concisão, usar strings.TrimSpace com um truque:

\n\n
// Remove apenas à esquerda: primeiro inverte, depois TrimSpace, depois inverte de volta\nfunc trimLeftSpace(s string) string {\n    runes := []rune(s)\n    for i, r := range runes {\n        if !unicode.IsSpace(r) {\n            return string(runes[i:])\n        }\n    }\n                

Blogs

Book Recommendations