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


🧭 Navegação Pedagógica


🎯 Nível 1: Fundamentos

Problema 14.1 — Leitura e Escrita Simples com os.WriteFile e os.ReadFile

Contexto: Leitura e Escrita Simples com os.WriteFile e os.ReadFile no contexto de Manipulação de Arquivos e I/O: os, io, bufio.

Requisitos de Execução:

  1. Gravar dados em arquivo e recuperar o conteúdo completo em slice de bytes.

Resultado Esperado

Arquivo gravado e lido utilizando funções utilitárias do pacote os.

📤 Instruções de Entrega (Microsoft Teams)

  1. Salve o arquivo como: Atividade_14_1_SeuNome
  2. Envie na tarefa: Atividade Cap 14 - Manipulação de Arquivos e I/O: os, io, bufio
🔑 Gabarito de Código & Solução Comentada
package main

import (
    "fmt"
    "os"
)

func main() {
    dados := []byte("AUDITORIA GO: Servico Operacional\n")
    os.WriteFile("log.txt", dados, 0644)
    lido, _ := os.ReadFile("log.txt")
    fmt.Printf("Lido: %s", string(lido))
}

🔍 Nível 2: Prática

Problema 14.2 — Leitura Linha a Linha com bufio.Scanner

Contexto: Leitura Linha a Linha com bufio.Scanner no contexto de Manipulação de Arquivos e I/O: os, io, bufio.

Requisitos de Execução:

  1. Processar arquivo texto linha por linha com scanner := bufio.NewScanner(file).

Resultado Esperado

Arquivo processado sequencialmente com consumo mínimo de memória.

📤 Instruções de Entrega (Microsoft Teams)

  1. Salve o arquivo como: Atividade_14_2_SeuNome
  2. Envie na tarefa: Atividade Cap 14 - Manipulação de Arquivos e I/O: os, io, bufio
🔑 Gabarito de Código & Solução Comentada
package main

import (
    "bufio"
    "fmt"
    "strings"
)

func main() {
    conteudo := "Linha A\nLinha B\nLinha C"
    scanner := bufio.NewScanner(strings.NewReader(conteudo))
    for scanner.Scan() {
        fmt.Println("Scanner:", scanner.Text())
    }
}

⚡ Nível 3: Integração

Problema 14.3 — Cópia em Stream com io.Copy() e Buffers Delimitados

Contexto: Cópia em Stream com io.Copy() e Buffers Delimitados no contexto de Manipulação de Arquivos e I/O: os, io, bufio.

Requisitos de Execução:

  1. Transferir dados entre streams com io.Copy(destino, origem) sem carregar o arquivo inteiro na RAM.

Resultado Esperado

Stream I/O transferida com alta vazão.

📤 Instruções de Entrega (Microsoft Teams)

  1. Salve o arquivo como: Atividade_14_3_SeuNome
  2. Envie na tarefa: Atividade Cap 14 - Manipulação de Arquivos e I/O: os, io, bufio
🔑 Gabarito de Código & Solução Comentada
package main

import (
    "bytes"
    "fmt"
    "io"
    "strings"
)

func main() {
    origem := strings.NewReader("Payload em stream")
    var destino bytes.Buffer
    escritos, _ := io.Copy(&destino, origem)
    fmt.Printf("Bytes transferidos via stream: %d\n", escritos)
}

🏆 Nível 4: Desafio Corporativo

Problema 14.4 — Manipulação de Arquivos Temporários com os.CreateTemp e Cleanup

Contexto: Manipulação de Arquivos Temporários com os.CreateTemp e Cleanup no contexto de Manipulação de Arquivos e I/O: os, io, bufio.

Requisitos de Execução:

  1. Criar arquivo temporário com os.CreateTemp('', 'prefix-*.tmp') garantindo deleção no defer com os.Remove.

Resultado Esperado

Arquivo temporário criado e purgado no encerramento.

📤 Instruções de Entrega (Microsoft Teams)

  1. Salve o arquivo como: Atividade_14_4_SeuNome
  2. Envie na tarefa: Atividade Cap 14 - Manipulação de Arquivos e I/O: os, io, bufio
🔑 Gabarito de Código & Solução Comentada
package main

import (
    "fmt"
    "os"
)

func main() {
    tmp, err := os.CreateTemp("", "audit-*.tmp")
    if err != nil { return }
    defer os.Remove(tmp.Name()) // Cleanup
    fmt.Printf("Arquivo temporario seguro: %s\n", tmp.Name())
}

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