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


🧭 Navegação Pedagógica


🎯 Nível 1: Fundamentos

Problema 09.1 — Operadores de Endereço (&) e Desreferenciação (*)

Contexto: Operadores de Endereço (&) e Desreferenciação (*) no contexto de Ponteiros, Endereçamento e Passagem por Valor vs Referência.

Requisitos de Execução:

  1. Obter endereço de memória de variável e alterar seu valor através de ponteiro.

Resultado Esperado

Valor de variável mutado via desreferenciação de ponteiro.

📤 Instruções de Entrega (Microsoft Teams)

  1. Salve o arquivo como: Atividade_09_1_SeuNome
  2. Envie na tarefa: Atividade Cap 09 - Ponteiros, Endereçamento e Passagem por Valor vs Referência
🔑 Gabarito de Código & Solução Comentada
package main

import "fmt"

func main() {
    x := 42
    p := &x
    fmt.Printf("Endereco: %p | Valor original: %d\n", p, *p)
    *p = 100
    fmt.Printf("Novo valor de x: %d\n", x)
}

🔍 Nível 2: Prática

Problema 09.2 — Passagem por Valor vs Ponteiro em Funções

Contexto: Passagem por Valor vs Ponteiro em Funções no contexto de Ponteiros, Endereçamento e Passagem por Valor vs Referência.

Requisitos de Execução:

  1. Demonstrar que funções em Go recebem cópias e como ponteiros permitem mutação na origem.

Resultado Esperado

Mutação persistida na variável original através de parâmetro ponteiro.

📤 Instruções de Entrega (Microsoft Teams)

  1. Salve o arquivo como: Atividade_09_2_SeuNome
  2. Envie na tarefa: Atividade Cap 09 - Ponteiros, Endereçamento e Passagem por Valor vs Referência
🔑 Gabarito de Código & Solução Comentada
package main

import "fmt"

func incrementar(val *int) {
    *val += 1
}

func main() {
    contador := 10
    incrementar(&contador)
    fmt.Printf("Contador incrementado: %d\n", contador)
}

⚡ Nível 3: Integração

Problema 09.3 — Alocação no Heap com a Função new()

Contexto: Alocação no Heap com a Função new() no contexto de Ponteiros, Endereçamento e Passagem por Valor vs Referência.

Requisitos de Execução:

  1. Alocar ponteiro para struct com new(Cliente) e inicializar campos.

Resultado Esperado

Objeto alocado via new() inicializado com ponteiro válido.

📤 Instruções de Entrega (Microsoft Teams)

  1. Salve o arquivo como: Atividade_09_3_SeuNome
  2. Envie na tarefa: Atividade Cap 09 - Ponteiros, Endereçamento e Passagem por Valor vs Referência
🔑 Gabarito de Código & Solução Comentada
package main

import "fmt"

type Configuracao struct { Timeout int }

func main() {
    cfg := new(Configuracao)
    cfg.Timeout = 30
    fmt.Printf("Config Timeout: %d segundos\n", cfg.Timeout)
}

🏆 Nível 4: Desafio Corporativo

Problema 09.4 — Escape Analysis do Compilador Go (go build -gcflags=’-m’)

Contexto: Escape Analysis do Compilador Go (go build -gcflags=’-m’) no contexto de Ponteiros, Endereçamento e Passagem por Valor vs Referência.

Requisitos de Execução:

  1. Demonstrar como o compilador decide se uma variável reside no Stack ou ‘escapa’ para o Heap.

Resultado Esperado

Análise de escape do compilador Go homologada.

📤 Instruções de Entrega (Microsoft Teams)

  1. Salve o arquivo como: Atividade_09_4_SeuNome
  2. Envie na tarefa: Atividade Cap 09 - Ponteiros, Endereçamento e Passagem por Valor vs Referência
🔑 Gabarito de Código & Solução Comentada
package main

import "fmt"

func criarBuffer() *int {
    x := 42 // Escapa para o Heap pois o endereco eh retornado
    return &x
}

func main() {
    p := criarBuffer()
    fmt.Printf("Valor recuperado: %d\n", *p)
}

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