1
resposta

[Bug] Cuidado na Identação do else.

Boa tarde!

Não é duvida, apenas um erro que pode acontecer na compilação que não acontece em outras linguagens.

Se você não deixar o else na mesma linha do fechamento da ultima chave, o compilador vai reclamar algo parecido com isso:

./hello.go:28:5: syntax error: unexpected else, expected }

A estrutura correta obrigatória é:

if condicao {
// código
} else { // O else DEVE estar aqui
// código
}

if condicao {
// código
}
else { // ERRO: syntax error: unexpected else, expecting }
// código
}

Se você fizer isso, vai dar erro de compilação:

Muito louco, mas tem uma explicação.Não é apenas uma convenção de estilo, é uma regra sintática do compilador de Go causada pela inserção automática de ponto e vírgula.

O compilador Go adiciona um ; ao final de cada linha que ele considera o fim de uma instrução.
Se você fecha a chave } em uma linha e coloca o else na próxima, o compilador insere um ; logo após a chave de fechamento.

As vezes uma facilidade pode ocasionar problemas inicialmente, mas depois de um tempo e de saber o motivo tudo começa a fazer mais sentido.

Até.

1 resposta

Ei! Tudo bem, Guilherme?

Você explicou perfeitamente o motivo do erro, não é só questão de estilo, é regra sintática do Go mesmo. Muito bom você trazer esse tipo de detalhe, isso ajuda bastante quem está começando e evita dor de cabeça na compilação e ajudo os(as) colegas que estão estudando o conteúdo.

Agradeço a contribuição e continue se dedicando aos estudos, qualquer dúvida é só compartilhar no fórum.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!