Erros Comuns em Go: Guia de Referência

Quando você programa em Go, inevitavelmente encontra mensagens de erro — seja do compilador, do runtime ou de ferramentas como o go vet e o race detector. Este guia reúne os erros mais frequentes que desenvolvedores Go enfrentam no dia a dia, com explicações claras e soluções práticas.

Se você está começando com Go, recomendamos primeiro ler nosso guia de tratamento de erros em Go, que explica os fundamentos da abordagem de erros da linguagem. Este guia complementa aquele conteúdo, focando nas mensagens de erro específicas que você encontra durante o desenvolvimento.


Erros de Compilação

Estes erros aparecem antes do seu programa executar. O compilador do Go é rigoroso e detecta muitos problemas antecipadamente.

Tipos e Valores

  • cannot use X as type Y — Quando você tenta atribuir ou passar um valor de tipo incompatível. Um dos erros mais frequentes, especialmente para quem vem de linguagens com tipagem dinâmica.

  • declared and not used — Variáveis declaradas que não são utilizadas. Exclusivo do Go e uma surpresa comum para iniciantes.

  • missing return at end of function — Quando uma função declara valores de retorno, mas nem todos os caminhos de execução retornam um valor.

  • multiple-value in single-value context — Quando você tenta usar o resultado de uma função que retorna múltiplos valores em um contexto que espera apenas um.

Referências e Escopo

  • undefined: variable or function — Referências a variáveis, funções ou campos que não existem no escopo atual, incluindo nomes não exportados de outros pacotes.

  • import cycle not allowed — Dependência circular entre pacotes. O compilador do Go não permite ciclos de importação.

Iteração


Erros de Runtime

Estes erros acontecem durante a execução do programa. São mais difíceis de prever porque dependem dos dados e do estado do programa.


Como Usar Este Guia

Cada página de erro contém:

  1. A mensagem de erro exata — para você identificar rapidamente
  2. O que causa o erro — explicação clara do motivo
  3. Código de exemplo — reproduzindo o erro
  4. Como resolver — soluções práticas com código corrigido
  5. Dicas adicionais — boas práticas para evitar o erro no futuro

Recursos Relacionados

Se você quer aprofundar seus conhecimentos sobre erros em Go, confira estes recursos:

cannot range over em Go

Resolva o erro 'cannot range over' em Go. Entenda quais tipos suportam range, como iterar corretamente e use iteradores customizados no Go.

Ler mais →

cannot use X as type Y em Go

Entenda e resolva o erro 'cannot use X as type Y' em Go. Causas comuns, exemplos de código e soluções práticas para incompatibilidade de tipos.

Ler mais →

data race detected em Go

Resolva 'data race detected' em Go. Aprenda a usar o race detector, identificar condições de corrida e proteger dados com mutex e channels.

Ler mais →

deadlock — all goroutines are asleep em Go

Resolva o erro 'all goroutines are asleep - deadlock!' em Go. Aprenda a identificar causas de deadlock com channels, mutexes e WaitGroups.

Ler mais →

declared and not used em Go

Resolva o erro 'declared and not used' em Go. Entenda por que Go não permite variáveis sem uso e conheça as formas corretas de lidar com isso.

Ler mais →

import cycle not allowed em Go

Resolva o erro 'import cycle not allowed' em Go. Aprenda a identificar e quebrar dependências circulares entre pacotes com exemplos práticos.

Ler mais →

missing return at end of function em Go

Resolva o erro 'missing return at end of function' em Go. Entenda por que o compilador exige retorno em todos os caminhos e como corrigir.

Ler mais →

multiple-value in single-value context em Go

Resolva o erro 'multiple-value in single-value context' em Go. Aprenda a lidar com funções que retornam múltiplos valores corretamente.

Ler mais →

nil pointer dereference em Go

Resolva o panic 'nil pointer dereference' em Go. Entenda causas de ponteiro nulo, como prevenir e técnicas para debug de panics no runtime.

Ler mais →

undefined: variable ou function em Go

Resolva o erro 'undefined' em Go. Saiba por que variáveis, funções e campos aparecem como indefinidos e como corrigir referências e exportação.

Ler mais →