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,elseeelse ifprecisam estar na mesma linha que a chave direita}. - As palavras-chave
else ifeelsetambé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çõeselse if, mas pode haver apenas uma instruçãoife uma instruçãoelse. - A instrução
else ifdeve ser colocada entre as instruçõesifeelse. - Você pode usar uma declaração de inicialização no
ifpara encurtar o código. - O compilador exige que as palavras-chave
if,elseeelse ifestejam na mesma linha que as chaves.



