Instrução If em Golang

GolangBeginner
Pratique Agora

Introdução

Ao criar um plano de tarefas, se uma tarefa ainda não foi concluída, ela será adicionada à lista de tarefas pendentes (to-do list), e se foi concluída, será movida para os itens concluídos.

No mundo da programação, também precisamos mudar a direção do programa com base em diferentes requisitos. A seguir, vamos aprender sobre a instrução de ramificação if, que é uma instrução de controle de fluxo.

Pontos de Conhecimento:

  • Instrução if
  • Instrução if-else
  • Instrução else-if
  • Regras de formatação

Instrução if

A instrução de ramificação mais comumente usada é a instrução if, que verifica se uma condição predefinida é verdadeira e, em seguida, decide se executa o bloco de código. Aqui está seu formato:

if condition {
    code block
}

Quando a condição é verdadeira, o programa executa o bloco de código; caso contrário, ele ignora o bloco de código.

Vamos dar uma olhada em um exemplo prático. Crie um novo arquivo chamado if.go e escreva o seguinte código nele:

cd ~/project
touch if.go
package main

import (
    "fmt"
)

func main() {
    var num = 40
    // Get the remainder of dividing two numbers using %
    if num % 2 == 0 {
        fmt.Println(num, "is even")
    }
}

Execute o programa:

go run if.go

O resultado é o seguinte:

40 is even

Neste programa, primeiro declaramos uma variável inteira num. Em seguida, na instrução if, usamos o operador módulo % para obter o resto da divisão de num por 2, e usamos o operador de igualdade == para verificar se o resto é igual a 0. Se for, o bloco de código é executado e ele informa que o número é par.

Instrução if else

O que devemos fazer se quisermos exibir algo diferente quando a condição na instrução if não for atendida? Nesse caso, podemos usar a instrução if else. Se a condição na instrução if for verdadeira, ela executa o bloco de código na instrução if; caso contrário, ela executa o bloco de código na instrução else.

O formato da instrução if else é semelhante à instrução if:

if condition {
    code
} else {
    code
}

Vamos ver um exemplo. O programa a seguir exibirá se hoje é um dia de semana ou um fim de semana:

cd ~/project
touch if_else.go
package main

import (
    "fmt"
    "time"
)

func main() {
    // Get the current time
    t := time.Now()

    // Check whether it is Saturday or Sunday
    if t.Weekday() == time.Saturday || t.Weekday() == time.Sunday {
        fmt.Println("Today is:", t.Weekday(), "weekend")
    } else {
        fmt.Println("Today is:", t.Weekday(), "weekday")
    }
}

Execute o programa:

go run if_else.go

O resultado é o seguinte:

Today is: Monday weekday

Usamos o pacote time da biblioteca padrão para obter a hora atual. Em seguida, comparando-a com sábado e domingo, se for fim de semana, o bloco de código na instrução if é executado; caso contrário, o bloco de código na instrução else é executado.

Instrução else if

Além de verificar uma única condição, também podemos usar a instrução else if para verificar múltiplas condições.

Seu formato é o seguinte:

if condition {
    code
} else if condition {
    code
} else {
    code
}

Em uma instrução de ramificação, você pode ter múltiplas instruções else if, mas você só pode ter uma instrução if e uma instrução else. A instrução else if deve ser posicionada entre as instruções if e else.

Vamos reescrever o programa na seção "if else" para exibir o dia da semana:

Atualize o arquivo if_else.go:

package main

import (
    "fmt"
    "time"
)

func main() {
    today := time.Now().Weekday()

    if today == time.Monday {
        fmt.Println("Today is Monday")
    } else if today == time.Tuesday {
        fmt.Println("Today is Tuesday")
    } else if today == time.Wednesday {
        fmt.Println("Today is Wednesday")
    } else if today == time.Thursday {
        fmt.Println("Today is Thursday")
    } else if today == time.Friday {
        fmt.Println("Today is Friday")
    } else if today == time.Saturday {
        fmt.Println("Today is Saturday")
    } else {
        fmt.Println("Today is Sunday")
    }
}

Execute o programa:

go run if_else.go

Após a execução, o resultado é o seguinte:

Today is Monday

No programa anterior, primeiro usamos time.Now() para obter a hora atual e, em seguida, obtemos o dia da semana a partir da hora atual. Neste programa, essas duas linhas de código são combinadas em uma linha. Depois de obter o dia da semana, ele o compara com a instrução de ramificação para exibir o dia da semana.

Declaração de Inicialização na Instrução if

No aprendizado anterior, a instrução if tinha apenas um parâmetro, a condição:

if condition {
    code
}

O parâmetro completo também inclui uma declaração de inicialização, que é um parâmetro opcional em Go. Ele é tipicamente usado para a declaração e inicialização de variáveis temporárias, e a declaração de inicialização é separada por um ponto e vírgula quando usada. A sintaxe é a seguinte:

if initialization statement; condition {
    code
}

Reescrevemos o programa na seção "if else". Movemos a declaração da variável para a instrução if como uma declaração de inicialização para encurtar o código:

package main

import (
    "fmt"
    "time"
)

func main() {
    if t := time.Now(); t.Weekday() == time.Saturday || t.Weekday() == time.Sunday {
        fmt.Println("Today is:", t.Weekday(), "weekend, studying and recharging")
    } else {
        fmt.Println("Today is:", t.Weekday(), "also studying hard")
    }
}

Execute o programa:

go run if_else.go

Pode-se ver que ele é executado corretamente:

Today is: Monday also studying hard

Nota: O escopo da variável declarada na declaração de inicialização é apenas dentro do bloco if.

Questões de Formatação

Não sei se vocês, gophers de Go, notaram os requisitos de formatação do Go ao aprender as instruções if.

  • Em Go, as palavras-chave if, else e else if precisam estar na mesma linha que a chave direita }.
  • As palavras-chave else if e else também precisam estar na mesma linha que a chave esquerda anterior, caso contrário, o compilador relatará um erro de sintaxe no tempo de compilação.

Se executarmos o programa após mover a instrução else para a próxima linha, o compilador relatará um erro de sintaxe.

Resumo

Neste laboratório, explicamos a instrução de ramificação if, incluindo os seguintes pontos principais:

  • Em um bloco de código de ramificação if, pode haver múltiplas instruções else if, mas pode haver apenas uma instrução if e uma instrução else.
  • A instrução else if deve ser colocada entre as instruções if e else.
  • Você pode usar uma declaração de inicialização no if para encurtar o código.
  • O compilador exige que as palavras-chave if, else e else if estejam na mesma linha que as chaves.