Como vencer o "declared and not used" em Go: guia completo

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: "Aaah, esse erro de novo!"



Se você já programou em Go, conhece essa sensação. Você acabou de escrever algumas linhas de código, inicia a compilação, e... o compilador joga na sua cara uma linha vermelha:



./main.go:10:2: x declared and not used


Familiar? Esta é, provavelmente, a "dor de cabeça" mais popular dos iniciantes em Go. No Stack Overflow, essa pergunta acumulou milhares de visualizações, e não é à toa. Go é uma linguagem rigorosa. Se você declarou uma variável, mas não a usou, o compilador se recusa a compilar o programa. Nada de "bom, talvez sirva depois".



Mas não se desespere! Neste artigo, vamos analisar 5 maneiras comprovadas de vencer esse erro. Você aprenderá como lidar corretamente com variáveis, quais ferramentas ajudam a evitar o problema e como transformar esse "incômodo" em um hábito útil.



Vamos lá!



Por que Go é tão rigoroso?



Antes de combater o erro, vamos entender sua natureza. Ao contrário de Python ou JavaScript, onde uma variável não utilizada é apenas um aviso, em Go isso é um erro de compilação. Por quê?



  • Limpeza do código. Go foi criado como uma linguagem para desenvolvimento industrial. Variáveis não utilizadas são lixo que dificulta a leitura e manutenção do código.
  • Prevenção de bugs. Frequentemente, uma variável "declarada, mas não utilizada" é um sinal de que você esqueceu de fazer algo. O compilador captura esses momentos.
  • Compilação rápida. Menos lixo — compilação mais rápida.


Agora que conhecemos o inimigo, vamos ver como vencê-lo.



Método 1: Blank Identifier — seu salva-vidas



A maneira mais simples e frequentemente usada é o blank identifier (identificador vazio) — o símbolo de sublinhado _. Ele diz ao compilador: "Eu sei que esta variável existe, mas não preciso dela, apenas ignore-a".



Exemplo: você chama uma função que retorna vários valores, mas precisa apenas de um.



package main

import "fmt"

func getData() (int, string) { return 42, "resposta secreta"}

func main() { // Precisamos apenas do número, ignoramos a string value, _ := getData() fmt.Println("Valor:", value)}


Aqui, _ recebe a string, mas não a usa. Sem erro. Funciona!



Importante: _ não é uma "lixeira". É uma variável completa que não pode ser lida. Você não pode escrever fmt.Println(_) — isso também é um erro de compilação.



Quando usar: quando você tem certeza de que o valor retornado não é necessário. Por exemplo, ao chamar funções que retornam um erro, mas você está certo de que ele não ocorrerá (embora seja uma prática questionável).



Método 2: Apenas use a variável (o mais óbvio)



Parece banal, mas frequentemente declaramos uma variável e esquecemos de usá-la. Basta adicionar uma linha que a "consuma".



package main

import "fmt"

func main() { name := "João" // Erro: name declared and not used

// Correção: fmt.Println("Olá,", name)}


Mas e se a variável for necessária apenas para algum cálculo intermediário e você não quiser exibi-la? Use _:



package main

func main() { result := calculateSomething() _ = result // Apenas "usa" a variável, sem fazer nada}

func calculateSomething() int { return 100}


Essa é uma maneira válida. Mas parece uma gambiarra. Melhor repensar a lógica.



Método 3: Depuração com linters



A melhor defesa é o ataque. Em vez de corrigir erros após a compilação, use linters<

Blogs

Book Recommendations