DEV Community

Linive
Linive

Posted on

1 1

if e operadores relacionais em Golang

Então prontos para mais um post?

Hoje vamos falar sobre o fluxo de controle condicional e operadores relacionais.

Primeiros temos que entender o que é uma condição. Segundo o google: "Condição é o que determina, ou não, a realização de alguma coisa". Exemplos:

  • Se fizer sol, vou a praia, se não fizer, ficarei em casa

Aqui a condição é fazer sol. Se fizer sol, a pessoa vai sair, mas se não fizer, ou seja, se chover, ela ficará em casa.

  • Se ganhar na loteria, vou viajar o mundo, se não ganhar, vou ao cinema

Desta vez a condição é ganhar na loteria.

É uma lógica fácil e que todos utilizam no dia a dia, mesmo sem perceber. Agora vamos aplica-la na linguagem de programação.


var fizerSol bool

if fizerSol == true {
    fmt.Println("Vou a praia")

} else {
   fmt.Println("Ficarei em casa")

}

Vamos analisar o código parte por parte.

fizerSol é uma variável booleana, ou seja, só aceita true ou false.

if literalmente significa "se". Então ele deve sempre estar acompanhado de uma condição, "se isso acontecer... se não...".

fizerSol == true, essa é a condição que acompanha o if. Se ela for verdadeira (true), então o código que está no code block do if será executado.


fizerSol := true //Está fazendo sol

if fizerSol == true { //A condição é verdadeira
    fmt.Println("Vou a praia") //Esse código será executado 
} 

else é o nosso "se não". Ele só será executado se a condição do if for falsa, ou seja, não esteja fazendo sol.


fizerSol := false //Está chovendo

if fizerSol == true { //A condição é false
    fmt.Println("Vou a praia") //Esse código não será executado

}  else { 
    fmt.Println("Ficarei em casa")//Esse código será executado
}

Nós também podemos criar várias condições em sequência com o else if.


fizerSol := false 
tenhoDinheiro := true


if fizerSol == true { 
    fmt.Println("Vou a praia") 

}  else if tenhoDiheiro == true { //Condição verdadeira
    fmt.Println("Vou ao cinema")//Esse código será executado

} else  { 
    fmt.Println("Ficarei em casa")
}

Agora além da condição do sol, temos a condição do dinheiro.
"Se fizer sol, vou a praia, se não fizer, ok 🤷🏽‍♀️... Eu ainda posso ir ao cinema, contanto que tenha dinheiro. Se eu não tiver dinheiro, ai não tem jeito, vou ficar em casa"

Ainda podemos colocar mais condições:


fizerSol := false 
tenhoDinheiro := true
diaDaSemana := false //Não é dia da semana


if fizerSol == true { 
    fmt.Println("Vou a praia") 

}  else if tenhoDiheiro == true { //Condição verdadeira

    if diaDaSemana == true { //Condição falsa
        fmt.Println("Vou ao cinema")
    } else { 
        fmt.Println("Vou a festa")//Esse código será executado 
    }
} else  { 
    fmt.Println("Ficarei em casa")
}

A lógica é a seguinte:

"Se fizer sol, vou a praia, se não fizer, ok 🤷🏽‍♀️... Se eu tiver dinheiro e for dia da semana, vou ao cinema. Se eu tiver dinheiro e não for dia da semana, vou a festa. Se eu não tiver dinheiro, fico em casa"

Agora que entendemos a lógica, vamos falar desse carinha aqui: ==. Já percebemos que ele tem o sentido de igual, mas estamos utilizando dois iguais ao invés de um. Isso acontece porque ele esta em uma condição.

Quando falamos: tenhoDinheiro = true, estou atribuindo um valor a variável. Quando estamos em uma condição, não queremos atribuir valor, queremos comparar duas coisas, relacionar elas. Então para não confundir, utilizamos dois iguais ==. Ele é chamado de operador relacional.

Um detalhe é que podemos tirar ele da condição, pois por padrão só iremos entrar no if se a variável for verdadeira, true. O efeito é o mesmo e ainda deixamos menos poluído.


fizerSol := false 
tenhoDinheiro := true
diaDaSemana := false //Não é dia da semana


if fizerSol { 
    fmt.Println("Vou a praia") 

}  else if tenhoDiheiro { //Condição verdadeira

    if diaDaSemana { //Condição falsa
        fmt.Println("Vou ao cinema")
    } else { 
        fmt.Println("Vou a festa")//Esse código será executado 
    }
} else  { 
    fmt.Println("Ficarei em casa")
}

Existem outros operadores relacionais, são eles:

  • < - Menor
  • > - Maior
  • == - Comparação
  • <= - Menor ou igual
  • >= - Maior ou igual
  • != - Diferente

Menor e Maior

Esses são mais utilizados no cotidiano.


num1 := 10
num2 := 100

if num1 > num2{//false, 10 não é maior que 100
    fmt.Println(num1,"é maior que", num2) //Esse código não será executado

} 

if num1 < num2  { // true, 10 é menor que 100 
    fmt.Println(num1,"é maior que", num2) //Esse código será executado
}

Menor ou igual e Maior ou igual


num1 := 10
num2 := 100
num3 := 10

if num1 >= num2{//false, 10 não é maior, nem igual a 100
    fmt.Println(num1,"é maior ou igual a", num2) //Esse código não será executado
} 

if num1 <= num2  { // true, 10 é MENOR ou igual a 100 
    fmt.Println(num1,"é maior ou igual a", num2) //Esse código será executado
}

if num1 <= num3  { // true, 10 é menor ou IGUAL a 10
    fmt.Println(num1,"é menor ou igual a", num3) //Esse código também será executado
}

Diferente


num1 := 10
num2 := 100
num3 := 10

if num1 != num2{//true, 10 é diferente de 100
    fmt.Println(num1,"é diferente", num2) //Esse código será executado
}

if num1 != num3  { // false, 10 não é diferente de 10
    fmt.Println(num1,"diferente de", num3) //Esse código não será executado
}

Além dos operadores relacionais, temos os Operadores lógicos. Mas vamos conhece-los amanhã, junto a com a nossa querida lógica booleana.

Para não perder o costume...
Vai dar uma olhada nesse curso. Material de qualidade e gratuito para a comunidade 🤙🏽

Fiquem bem, assistam muitas séries e até amanhã.

Alt Text

Hostinger image

Get n8n VPS hosting 3x cheaper than a cloud solution

Get fast, easy, secure n8n VPS hosting from $4.99/mo at Hostinger. Automate any workflow using a pre-installed n8n application and no-code customization.

Start now

Top comments (0)

nextjs tutorial video

Youtube Tutorial Series 📺

So you built a Next.js app, but you need a clear view of the entire operation flow to be able to identify performance bottlenecks before you launch. But how do you get started? Get the essentials on tracing for Next.js from @nikolovlazar in this video series 👀

Watch the Youtube series