Spec Sistemas Com Go • Trilha Progressiva em 4 Níveis


🧭 Navegação Pedagógica


🎯 Nível 1: Fundamentos

Problema 03.1 — Condicional if com Declaração Prévia (if err := …; err != nil)

Contexto: Condicional if com Declaração Prévia (if err := …; err != nil) no contexto de Estruturas Condicionais: if com Declaração Prévia e switch.

Requisitos de Execução:

  1. Executar instrução e testar condição limitando o escopo da variável ao bloco if.

Resultado Esperado

Variável temporária isolada estritamente dentro do bloco condicional.

📤 Instruções de Entrega (Microsoft Teams)

  1. Salve o arquivo como: Atividade_03_1_SeuNome
  2. Envie na tarefa: Atividade Cap 03 - Estruturas Condicionais: if com Declaração Prévia e switch
🔑 Gabarito de Código & Solução Comentada
package main

import (
    "errors"
    "fmt"
)

func validar() error { return errors.New("campo_obrigatorio") }

func main() {
    if err := validar(); err != nil {
        fmt.Printf("Erro capturado no escopo do if: %v\n", err)
    }
}

🔍 Nível 2: Prática

Problema 03.2 — Switch sem Expressão (Substituto Idiomático de if-else chains)

Contexto: Switch sem Expressão (Substituto Idiomático de if-else chains) no contexto de Estruturas Condicionais: if com Declaração Prévia e switch.

Requisitos de Execução:

  1. Escrever switch limpo sem valor de controle testando múltiplos predicados booleanos.

Resultado Esperado

Lógica condicional organizada em switch idiomático do Go.

📤 Instruções de Entrega (Microsoft Teams)

  1. Salve o arquivo como: Atividade_03_2_SeuNome
  2. Envie na tarefa: Atividade Cap 03 - Estruturas Condicionais: if com Declaração Prévia e switch
🔑 Gabarito de Código & Solução Comentada
package main

import "fmt"

func main() {
    idade := 25
    switch {
    case idade < 18:
        fmt.Println("Menor de idade")
    case idade < 65:
        fmt.Println("Adulto")
    default:
        fmt.Println("Idoso")
    }
}

⚡ Nível 3: Integração

Problema 03.3 — Type Switch para Inspeção de Tipos Dinâmicos (any)

Contexto: Type Switch para Inspeção de Tipos Dinâmicos (any) no contexto de Estruturas Condicionais: if com Declaração Prévia e switch.

Requisitos de Execução:

  1. Inspecionar tipo real de uma interface vazia switch v := x.(type).

Resultado Esperado

Tipo dinâmico identificado e desempacotado em tempo de execução.

📤 Instruções de Entrega (Microsoft Teams)

  1. Salve o arquivo como: Atividade_03_3_SeuNome
  2. Envie na tarefa: Atividade Cap 03 - Estruturas Condicionais: if com Declaração Prévia e switch
🔑 Gabarito de Código & Solução Comentada
package main

import "fmt"

func inspecionarTipo(i any) {
    switch v := i.(type) {
    case int:
        fmt.Printf("Inteiro: %d\n", v*2)
    case string:
        fmt.Printf("Texto com %d caracteres\n", len(v))
    default:
        fmt.Printf("Tipo desconhecido: %T\n", v)
    }
}

func main() {
    inspecionarTipo(42)
    inspecionarTipo("GoLang")
}

🏆 Nível 4: Desafio Corporativo

Problema 03.4 — Fallthrough Explícito no switch

Contexto: Fallthrough Explícito no switch no contexto de Estruturas Condicionais: if com Declaração Prévia e switch.

Requisitos de Execução:

  1. Utilizar palavra-chave fallthrough intencionalmente para execução em cascata de regras de auditoria.

Resultado Esperado

Execução em cascata controlada via fallthrough explícito.

📤 Instruções de Entrega (Microsoft Teams)

  1. Salve o arquivo como: Atividade_03_4_SeuNome
  2. Envie na tarefa: Atividade Cap 03 - Estruturas Condicionais: if com Declaração Prévia e switch
🔑 Gabarito de Código & Solução Comentada
package main

import "fmt"

func main() {
    nivel := 2
    switch nivel {
    case 2:
        fmt.Println("Nivel 2 ativado")
        fallthrough
    case 1:
        fmt.Println("Nivel 1 ativado (cascata)")
    }
}

⬅️ Voltar ao Índice de Exercícios 📚 Sumário de Tópicos