As instruções condicionais fazem parte de todas as linguagens de programação. Com as instruções condicionais, podemos ter códigos que algumas vezes executam e em outras ocasiões não, dependendo das condições do programa naquele momento.
Quando executamos totalmente cada instrução de um programa, não estamos pedindo que o programa avalie condições específicas. Ao usar as instruções condicionais, os programas podem determinar se certas condições estão sendo cumpridas e, então, ser informados do que fazer a seguir.
Vejamos alguns exemplos de onde usaríamos as instruções condicionais:
Ao avaliar as condições e atribuir o código a ser executado com base em se essas condições são cumpridas ou não, estamos escrevendo códigos condicionais.
Este tutorial explicará a você sobre como escrever instruções condicionais na linguagem de programação em Go.
Começaremos com a instrução if
, que avaliará se uma instrução é verdadeira ou falsa e executará o código apenas no caso em que a instrução for verdadeira.
Num editor de texto simples, abra um arquivo e escreva o seguinte código:
package main
import "fmt"
func main() {
grade := 70
if grade >= 65 {
fmt.Println("Passing grade")
}
}
Com esse código, temos a grade
variável e estamos dando a ela o valor inteiro de 70
. Em seguida, estamos usando a instrução if
para avaliar se a nota variável é ou não maior ou igual (>=
) a 65
. Se ela atender a essa condição, estamos dizendo ao programa para imprimir a string Passing grade
.
Salve o programa como grade.go
e o execute em um ambiente de programação local a partir de uma janela de terminal com o comando go run grade.go
.
Neste caso, a nota de 70 realmente atende à condição de ser maior ou igual a 65, de modo que você receberá o seguinte resultado assim que executar o programa:
OutputPassing grade
Agora, vamos alterar o resultado deste programa, mudando o valor da variável grade
para 60
:
package main
import "fmt"
func main() {
grade := 60
if grade >= 65 {
fmt.Println("Passing grade")
}
}
Ao salvarmos e executarmos este código, não iremos receber nenhum resultado porque a condição não foi cumprida e não dissemos ao programa para executar outra instrução.
Para dar mais um exemplo, vamos calcular se um saldo de conta bancária está abaixo de 0. Vamos criar um arquivo chamado account.go
e escrever o seguinte programa:
package main
import "fmt"
func main() {
balance := -5
if balance < 0 {
fmt.Println("Balance is below 0, add funds now or you will be charged a penalty.")
}
}
Quando executarmos o programa com o go run account.go
, receberemos o seguinte resultado:
OutputBalance is below 0, add funds now or you will be charged a penalty.
No programa, nós inicializamos a variável balance
com o valor de -5
, que é menor que 0. Como o saldo cumpriu a condição da instrução if
(balance < 0
), assim que salvarmos e executarmos o código, receberemos o resultado da string. Novamente, se alterarmos o saldo para 0 ou um número positivo, não iremos receber nenhum resultado.
É provável que queiramos que o programa faça algo mesmo quando uma instrução if
avalia algo como falso. No nosso exemplo de nota, queremos produzir o resultado de se a nota é de aprovação ou desaprovação.
Para fazer isso, adicionaremos uma instrução else
na condição da nota acima que é construída dessa forma:
package main
import "fmt"
func main() {
grade := 60
if grade >= 65 {
fmt.Println("Passing grade")
} else {
fmt.Println("Failing grade")
}
}
Como a variável de nota tem o valor de 60
, a instrução if
a avalia como falsa, então o programa não irá imprimir Passing grade
. A instrução else
que segue diz ao programa para fazer algo, de qualquer maneira.
Quando salvarmos e executarmos o programa, receberemos o seguinte resultado:
OutputFailing grade
Se reescrevermos o programa para dar à nota um valor de 65
ou mais, em vez disso, receberemos o resultado Passing grade
.
Para adicionar instrução else
ao exemplo da conta bancária, reescrevemos o código desta forma:
package main
import "fmt"
func main() {
balance := 522
if balance < 0 {
fmt.Println("Balance is below 0, add funds now or you will be charged a penalty.")
} else {
fmt.Println("Your balance is 0 or above.")
}
}
OutputYour balance is 0 or above.
Aqui, mudamos o valor da variável balance
para um número positivo, de maneira que a instrução else
seja impressa. Para fazer com que a primeira instrução if
seja impressa, podemos reescrever o valor para um número negativo.
Ao combinar uma instrução if
com uma instrução else
, você estará construindo uma instrução condicional de duas partes que irá dizer ao computador para executar certos códigos se a condição if
for cumprida.
Até agora, apresentamos uma opção Booleana para as instruções condicionais, com cada instrução if
avaliando como verdadeiro ou falso. Em muitos casos, vamos querer um programa que avalie mais de dois resultados possíveis. Para fazer isso, usaremos uma instrução Senão se, que é escrita em Go como else if
. A else if
, ou instrução “Senão se” é parecida com a instrução if
e avaliará outra condição.
No programa da conta bancária, podemos querer ter três saídas distintas para obter três situações diferentes:
A instrução else if
será colocada entre a instrução if
e a instrução else
do seguinte modo:
package main
import "fmt"
func main() {
balance := 522
if balance < 0 {
fmt.Println("Balance is below 0, add funds now or you will be charged a penalty.")
} else if balance == 0 {
fmt.Println("Balance is equal to 0, add funds soon.")
} else {
fmt.Println("Your balance is 0 or above.")
}
}
Agora, há três possíveis resultados que podem ocorrer assim que executarmos o programa:
balance
for igual a 0
, receberemos o resultado da instrução else if
(Balance is equal to 0, add funds soon.
) (Saldo igual a 0, adicione fundos logo.).balance
for definida em um número positivo, receberemos o resultado da instrução else
(Your balance is 0 or above.
) (Seu saldo é 0 ou mais).balance
for definida em um número negativo, o resultado será a string da instrução if
(Balance is below 0, add funds now or you will be charged a penalty
) (Saldo abaixo de 0, adicione fundos agora ou haverá cobrança de uma multa).Mas e se, apesar disso, quisermos ter mais de três possibilidades? Podemos fazer isso escrevendo mais de um instrução else if
no nosso código.
No programa grade.go
, vamos reescrever o código para que haja algumas notas alfabéticas que correspondam a intervalos de notas numéricas:
Para executar esse código, precisaremos de uma instrução if
, três instruções else if
e uma instrução else
que lidará com todos os casos de desaprovação.
Vamos reescrever o código do exemplo anterior para ter strings que imprimam cada uma das avaliações alfabéticas. Podemos manter nossa instrução else
da mesma forma.
package main
import "fmt"
func main() {
grade := 60
if grade >= 90 {
fmt.Println("A grade")
} else if grade >= 80 {
fmt.Println("B grade")
} else if grade >= 70 {
fmt.Println("C grade")
} else if grade >= 65 {
fmt.Println("D grade")
} else {
fmt.Println("Failing grade")
}
}
Como as instruções else if
avaliarão em ordem, podemos manter nossas instruções bastante básicas. Este programa está completando os seguintes passos:
Se a nota for maior que 90, o programa irá imprimir A grade
, se a nota for menor que 90, o programa continuará com a próxima instrução…
Se a nota for maior ou igual a 80, o programa irá imprimir B grade
, se a nota for 79 ou menos, o programa continuará com a próxima instrução…
Se a nota for maior ou igual a 70, o programa irá imprimir C grade,
se a nota for 69 ou menos, o programa continuará com a próxima instrução…
Se a nota for maior ou igual a 65, o programa irá imprimir D grade
, se a nota for 64 ou menos, o programa continuará com a próxima instrução…
O programa irá imprimir Failing grade
porque todas as condições acima não foram cumpridas.
Assim que estiver se sentindo confortável com as instruções if
, else if
e else
, siga para as instruções condicionais aninhadas. Podemos usar as instruções if
aninhadas para situações onde queremos verificar uma condição secundária caso a primeira condição execute como verdadeira. Para fazer isso, podemos ter uma instrução if-else dentro de outra instrução if-else. Vejamos a sintaxe de uma instrução if
aninhada:
if statement1 { // outer if statement
fmt.Println("true")
if nested_statement { // nested if statement
fmt.Println("yes")
} else { // nested else statement
fmt.Println("no")
}
} else { // outer else statement
fmt.Println("false")
}
Alguns possíveis resultados podem resultar deste código:
statement1
é avaliada como verdadeira, o programa irá avaliar se a nested_statement
também é avaliada como verdadeira. Se ambos os casos forem verdadeiros, o resultado será:
Outputtrue yes
a statement1
for avaliada como verdadeira, mas a nested_statement
for avaliada como falsa, então o resultado será:
Outputtrue no
statement1
for avaliada como falsa, a instrução if-else aninhada não será executada, de modo que a instrução else
será executada sozinha e o resultado será:
Outputfalse
Também podemos ter várias instruções if
aninhadas ao longo do nosso código:
if statement1 { // outer if
fmt.Println("hello world")
if nested_statement1 { // first nested if
fmt.Println("yes")
} else if nested_statement2 { // first nested else if
fmt.Println("maybe")
} else { // first nested else
fmt.Println("no")
}
} else if statement2 { // outer else if
fmt.Println("hello galaxy")
if nested_statement3 { // second nested if
fmt.Println("yes")
} else if nested_statement4 { // second nested else if
fmt.Println("maybe")
} else { // second nested else
fmt.Println("no")
}
} else { // outer else
statement("hello universe")
}
Neste código, há uma instrução if
aninhada dentro de cada instrução if
, além da instrução else if
. Isso permitirá mais opções dentro de cada condição.
Vamos examinar um exemplo de instruções if
aninhadas com nosso programa grade.go
. Podemos verificar primeiro se uma nota é de aprovação (maior ou igual a 65%) e, então, avaliar a qual nota alfabética a nota numérica deve equivaler. No entanto, se a nota não for de aprovação, não precisaremos executar pela avaliação alfabética. Em vez disso, poderemos ter o relatório do programa de que a avaliação foi de desaprovação. Nosso código modificado com a instrução if aninhada se
parecerá com este:
package main
import "fmt"
func main() {
grade := 92
if grade >= 65 {
fmt.Print("Passing grade of: ")
if grade >= 90 {
fmt.Println("A")
} else if grade >= 80 {
fmt.Println("B")
} else if grade >= 70 {
fmt.Println("C")
} else if grade >= 65 {
fmt.Println("D")
}
} else {
fmt.Println("Failing grade")
}
}
Se executarmos o código com a variável grade
definida como o valor de númer o
inteiro 92, a primeira condição será cumprida e o programa irá imprimir Passing grade of
: . Em seguida, ele irá verificar se a nota é maior ou igual a 90 e, como essa condição também é cumprida, irá imprimir A
.
Se executarmos o código com a variável grade
definida em 60
, significa que a primeira condição não foi cumprida e, assim, o programa irá ignorar as instruções if
aninhadas e prosseguirá com a instrução else
e o programa imprimirá Failing grade
.
É claro que podemos adicionar ainda mais opções a isso e usar uma segunda camada de instruções if aninhadas. Talvez queiramos avaliar em relação às notas de A+, A e A- separadamente. Podemos fazer isso primeiro verificando se a nota é de aprovação; depois, verificando para saber se a nota é 90 ou acima e, em seguida, verificando se a nota está acima de 96 em relação a uma avaliação de A+:
...
if grade >= 65 {
fmt.Print("Passing grade of: ")
if grade >= 90 {
if grade > 96 {
fmt.Println("A+")
} else if grade > 93 && grade <= 96 {
fmt.Println("A")
} else {
fmt.Println("A-")
}
...
Neste código, para uma variável grade
definida em 96
, o programa irá executar o seguinte:
Passing grade of:
A
Portanto, o resultado do programa para uma nota 96 se parece com este:
OutputPassing grade of: A
As instruções if
aninhadas podem dar a oportunidade de adicionar diversos níveis específicos de condições ao seu código.
Ao usar instruções condicionais como a instrução if
, você terá maior controle sobre o que seu programa executa. As instruções condicionais dizem ao programa para avaliar se uma certa condição está sendo cumprida. Se a condição for cumprida, o programa irá executar o código específico; mas, se não for cumprida, o programa continuará passando para outro código.
Para continuar praticando instruções condicionais, tente usar operadores diferentes para adquirir maior familiaridade com as instruções condicionais.
Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.
This textbox defaults to using Markdown to format your answer.
You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!