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


🧭 Navegação Pedagógica


🎯 Nível 1: Fundamentos

Problema 01.1 — Função main() e Impressão Formatada com fmt.Printf()

Contexto: Função main() e Impressão Formatada com fmt.Printf() no contexto de Introdução ao Go, Ferramentas CLI e Entrada/Saída com fmt.

Requisitos de Execução:

  1. Escrever programa em Go com pacote main e formatação de inteiros, strings e booleanos.

Resultado Esperado

Executável Go compilado imprimindo saída formatada.

📤 Instruções de Entrega (Microsoft Teams)

  1. Salve o arquivo como: Atividade_01_1_SeuNome
  2. Envie na tarefa: Atividade Cap 01 - Introdução ao Go, Ferramentas CLI e Entrada/Saída com fmt
🔑 Gabarito de Código & Solução Comentada
package main

import "fmt"

func main() {
    versao := "1.22"
    fmt.Printf("Go Systems Programming (Go v%s)\n", versao)
    fmt.Println("Concorrencia nativa e compilacao estatica iniciadas.")
}

🔍 Nível 2: Prática

Problema 01.2 — Leitura de Entrada com fmt.Scanln() e bufio.NewReader

Contexto: Leitura de Entrada com fmt.Scanln() e bufio.NewReader no contexto de Introdução ao Go, Ferramentas CLI e Entrada/Saída com fmt.

Requisitos de Execução:

  1. Ler dados do usuário via console capturando linhas completas com bufio.NewReader(os.Stdin).

Resultado Esperado

Entrada capturada e processada sem cortes de espaços.

📤 Instruções de Entrega (Microsoft Teams)

  1. Salve o arquivo como: Atividade_01_2_SeuNome
  2. Envie na tarefa: Atividade Cap 01 - Introdução ao Go, Ferramentas CLI e Entrada/Saída com fmt
🔑 Gabarito de Código & Solução Comentada
package main

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

func main() {
    leitor := bufio.NewReader(os.Stdin)
    fmt.Print("Digite seu identificador: ")
    texto, _ := leitor.ReadString('\n')
    fmt.Printf("Identificador lido: %s", strings.TrimSpace(texto))
}

⚡ Nível 3: Integração

Problema 01.3 — Build Cross-Platform com Flags GOOS e GOARCH

Contexto: Build Cross-Platform com Flags GOOS e GOARCH no contexto de Introdução ao Go, Ferramentas CLI e Entrada/Saída com fmt.

Requisitos de Execução:

  1. Compilar executável para Linux ARM64 a partir do Windows usando variáveis de ambiente do Go.

Resultado Esperado

Binário compilado para target Linux ARM64 sem dependências externas.

📤 Instruções de Entrega (Microsoft Teams)

  1. Salve o arquivo como: Atividade_01_3_SeuNome
  2. Envie na tarefa: Atividade Cap 01 - Introdução ao Go, Ferramentas CLI e Entrada/Saída com fmt
🔑 Gabarito de Código & Solução Comentada
# Script de Cross-Compilation
export GOOS=linux
export GOARCH=arm64
export CGO_ENABLED=0
go build -ldflags="-s -w" -o app_linux_arm64 main.go
echo "Binario Linux ARM64 gerado com sucesso." 

🏆 Nível 4: Desafio Corporativo

Problema 01.4 — Flags de Injeção de Versão em Tempo de Build (-ldflags -X)

Contexto: Flags de Injeção de Versão em Tempo de Build (-ldflags -X) no contexto de Introdução ao Go, Ferramentas CLI e Entrada/Saída com fmt.

Requisitos de Execução:

  1. Injetar commit SHA e data de compilação diretamente em variáveis globais no comando go build.

Resultado Esperado

Versão e commit SHA embutidos no binário final sem alterar código fonte.

📤 Instruções de Entrega (Microsoft Teams)

  1. Salve o arquivo como: Atividade_01_4_SeuNome
  2. Envie na tarefa: Atividade Cap 01 - Introdução ao Go, Ferramentas CLI e Entrada/Saída com fmt
🔑 Gabarito de Código & Solução Comentada
package main

import "fmt"

var (
    Version = "dev"
    GitCommit = "none"
)

func main() {
    fmt.Printf("App Versao: %s | Commit: %s\n", Version, GitCommit)
}

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