Pular para o conteúdo principal

Condicionais

4 min de leitura•Arquivado emLinguagem de Programação Goem

Domine os statements condicionais em Go — if, else, else if e if com init statement. Aprenda como Go impõe condições booleanas estritas e como variáveis com escopo tornam o tratamento de erros mais limpo.

O statement if

Um statement if executa um bloco de código somente quando uma condição é verdadeira. A condição é uma expressão booleana — ela deve avaliar para true ou false.

Os parênteses em torno da condição são opcionais em muitas linguagens, mas ausentes por convenção em Go — o compilador os aceita, mas o gofmt os remove. As chaves, por outro lado, são sempre obrigatórias. Go não permite corpos de if em uma única linha sem chaves.

O statement if-else

Um bloco else executa quando a condição é falsa. Ele fornece um segundo caminho de execução — exatamente um dos dois blocos será executado:

A keyword else deve aparecer na mesma linha que a chave de fechamento do bloco if. Colocá-la na linha seguinte é um compile error porque a inserção automática de ponto e vírgula do Go coloca um ; após o }, tornando o else inacessível:

O statement if-else if

Quando você precisa avaliar mais de duas condições, pode encadear cláusulas else if. Go as avalia de cima para baixo e executa o primeiro bloco cuja condição seja verdadeira. Se nenhuma condição corresponder e houver um else, esse bloco é executado:

Uma vez que uma condição corresponde, os demais branches são completamente ignorados — Go não cai nos blocos else if seguintes. O else final é opcional; sem ele, se nenhuma condição corresponder, a execução continua após toda a cadeia.

If com init statement

Go permite um statement de inicialização opcional antes da condição, separado por ponto e vírgula. A variável declarada no init statement tem escopo para todo o bloco if-else — ela existe apenas dentro daquele bloco e não é acessível após ele:

Isso não é apenas uma conveniência sintática — é um mecanismo de escopo intencional. Ao declarar a variável dentro do if, você sinaliza que seu propósito está exclusivamente vinculado àquela verificação condicional. Ela não pode vazar para o escopo externo e afetar código não relacionado.

O padrão é usado constantemente para tratamento de erros em Go. Funções que podem falhar retornam um valor e um error. O init statement captura ambos, e o corpo trata o caminho de falha:

Essa é a forma idiomática Go de tratar erros inline, sem declarar uma variável descartável no escopo externo apenas para verificá-la uma vez. A variável existe exatamente pelo tempo necessário — nada mais.