1 Visão geral das Declarações Condicionais

As declarações condicionais são ferramentas importantes para controlar o fluxo lógico dos programas de programação. Em Golang, as declarações condicionais são similares às de outras linguagens de programação, mas possuem suas próprias características. Elas nos permitem decidir qual código executar com base em condições verdadeiras ou falsas, aumentando significativamente a flexibilidade e a manutenibilidade do código.

2 Declaração if

2.1 Uso Básico da Declaração if

A declaração if é a declaração condicional mais básica na linguagem Go. Sua sintaxe é a seguinte:

if condição {
    // Código a ser executado quando a condição for verdadeira
}

Aqui está um exemplo simples:

pacote principal

import "fmt"

func main() {
    x := 10
    if x > 5 {
        fmt.Println("x é maior que 5")
    }
}

Este código verificará se x é maior que 5 e, se for, realizará a operação de impressão.

2.2 Expressões Condicionais

As expressões condicionais consistem em operadores de comparação (como ==, !=, <, >, <=, >=) e operadores lógicos (como && (E), || (OU), ! (NÃO)).

Por exemplo, para verificar se uma variável está dentro de determinado intervalo:

y := 20
if y >= 10 && y <= 30 {
    fmt.Println("y está entre 10 e 30")
}

A expressão condicional acima utiliza o operador lógico && para garantir que o valor de y esteja entre 10 e 30.

2.3 Estrutura if...else e else if

Quando a condição do if não é atendida, podemos usar else para executar um bloco de código alternativo. O else if nos permite verificar múltiplas condições. Aqui está um exemplo:

pontuação := 88

if pontuação >= 90 {
    fmt.Println("Excelente")
} else if pontuação >= 80 {
    fmt.Println("Bom")
} else if pontuação >= 70 {
    fmt.Println("Médio")
} else {
    fmt.Println("Abaixo da Média")
}

Este código imprimirá diferentes avaliações com base no valor da pontuação.

3 Declaração switch

3.1 Sintaxe Básica do switch

A declaração switch é uma declaração de ramificação condicional mais concisa, especialmente adequada para situações em que múltiplos valores precisam ser avaliados. A sintaxe básica da declaração switch é a seguinte:

switch expressão {
case valor1:
    // Código a ser executado quando o valor corresponder ao valor1
case valor2:
    // Código a ser executado quando o valor corresponder ao valor2
padrão:
    // Código a ser executado por padrão
}

Se o valor da expressão corresponder ao valor após case, o respectivo bloco de código será executado.

3.2 Fallthrough do switch

Na declaração switch do Go, cada ramificação não passa para o próximo caso por padrão, a menos que a palavra-chave fallthrough seja usada.

switch num {
case 1:
    fmt.Println("Um")
    fallthrough
case 2:
    fmt.Println("Dois")
padrão:
    fmt.Println("Nem Um nem Dois")
}

No código acima, se num for 1, mesmo que corresponda a case 1, devido à presença da palavra-chave fallthrough, o programa continuará a executar o código em case 2 e imprimirá "Dois".

3.3 Ramificação de Tipo e Ramificação Personalizada

A declaração switch também suporta ramificação com base em tipos de variáveis, conhecida como ramificação de tipo. Além disso, podemos criar condições de ramificação personalizadas mais complexas conforme necessário.

Exemplo de ramificação de tipo:

var i interface{} = 1

switch i.(type) {
case int:
    fmt.Println("i é um inteiro")
case float64:
    fmt.Println("i é um float64")
padrão:
    fmt.Println("i é outro tipo")
}

Condições de ramificação personalizadas podem ser escritas para realizar julgamentos condicionais mais complexos, conforme necessário.

4 Exercício Prático

Nesta seção, aprofundaremos nossa compreensão e aplicação das declarações condicionais em Golang através de exemplos específicos. Através de desafios de programação práticos, você se tornará mais proficiente no uso das declarações if e switch para resolver problemas do mundo real.

Calculadora de Notas

Vamos escrever uma calculadora de notas simples. Este programa irá determinar e exibir a nota correspondente com base na pontuação inserida pelo usuário. Os critérios de classificação são os seguintes:

  • A para pontuações de 90 ou mais
  • B para pontuações entre 80 e 89
  • C para pontuações entre 70 e 79
  • D para pontuações entre 60 e 69
  • F para pontuações abaixo de 60

Podemos usar uma instrução if ou uma instrução switch para implementar esta funcionalidade. Primeiro, vamos ver um exemplo usando uma instrução if:

pacote principal

import (
	"fmt"
)

func main() {
	var pontuacao int
	fmt.Print("Por favor, insira a pontuação: ")
	fmt.Scan(&pontuacao)

	if pontuacao >= 90 {
		fmt.Println("Nota: A")
	} else if pontuacao >= 80 {
		fmt.Println("Nota: B")
	} else if pontuacao >= 70 {
		fmt.Println("Nota: C")
	} else if pontuacao >= 60 {
		fmt.Println("Nota: D")
	} else {
		fmt.Println("Nota: F")
	}
}

Neste código, primeiro declaramos uma variável pontuação para armazenar a pontuação inserida pelo usuário. Usamos a função fmt.Scan para obter a entrada do usuário. Em seguida, usamos várias instruções if e else if para determinar a nota correspondente para a pontuação e usamos a função fmt.Println para exibir a nota.

Em seguida, vamos ver um exemplo usando uma instrução switch:

pacote principal

import (
	"fmt"
)

func main() {
	var pontuacao int
	fmt.Print("Por favor, insira a pontuação: ")
	fmt.Scan(&pontuacao)

	switch {
	case pontuacao >= 90:
		fmt.Println("Nota: A")
	case pontuacao >= 80:
		fmt.Println("Nota: B")
	case pontuacao >= 70:
		fmt.Println("Nota: C")
	case pontuacao >= 60:
		fmt.Println("Nota: D")
	default:
		fmt.Println("Nota: F")
	}
}

No exemplo usando a instrução switch, a estrutura do código é mais concisa e clara. Não precisamos usar muitas instruções if e else if consecutivas; em vez disso, especificamos diretamente as condições em cada case após o switch. A pontuação que não corresponde à condição do case anterior avança automaticamente para o próximo case até corresponder ao ramo condicional correspondente ou atingir o caso default, que imprime a nota F.

Agora que você aprendeu como usar if e switch para julgamentos condicionais, tente escrever seu próprio programa e pratique para aprofundar seu entendimento.

Na próxima seção, vamos continuar a introduzir mais problemas práticos para ajudar a consolidar seu domínio das declarações condicionais em Golang.

Observe que o código acima é para fins instrutivos. Ao ser usado em aplicações práticas, fatores como interação com o usuário e tratamento de erros devem ser considerados para torná-lo mais robusto.