Repositório completo de estudos e projetos em Go - Do básico ao avançado
🎯 Visão Geral • 📁 Estrutura • 🚀 Projetos • 📖 Conceitos • 🔧 Como Usar
Este repositório contém uma jornada completa de aprendizado em Go, desde os conceitos fundamentais até o desenvolvimento de APIs RESTful completas. Os estudos estão organizados de forma progressiva, permitindo uma evolução natural do conhecimento.
- 3 Projetos Principais desenvolvidos
- 100+ Exercícios práticos
- 50+ Conceitos fundamentais abordados
- 3 APIs RESTful implementadas
- Arquiteturas diferentes exploradas
Estudos-Realizados/
├── 📚 Curso_Aprenda_GO/ # Fundamentos e exercícios práticos
├── 🚀 Curso-API-GO/ # API Todo com Chi Router
└── 🏋️ API-Kelche/ # API Fitness com Echo Framework
Objetivo: Aprender os conceitos fundamentais da linguagem Go através de exercícios práticos.
- Hello World - Primeiro contato com Go
- Variáveis e Tipos - Declaração e tipos de dados
- Valores Zero - Valores padrão dos tipos
- Constantes e Iota - Constantes e enumerações
- Operadores - Aritméticos, lógicos e de comparação
- Controle de Fluxo - Loops, condicionais, switch
- Arrays - Coleções de tamanho fixo
- Slices - Coleções dinâmicas (fatiamento, make, append)
- Maps - Estruturas chave-valor
- Structs - Estruturas personalizadas
- Interfaces - Contratos para tipos
- Goroutines - Execução concorrente
- Canais - Comunicação entre goroutines
- WaitGroups - Sincronização
- Mutex e Atomic - Controle de acesso
- Select - Multiplexação de canais
- Context - Cancelamento e timeouts
- Testes Unitários - Testes automatizados
- Benchmarks - Medição de performance
- go fmt - Formatação de código
- go vet - Análise estática
- godoc - Documentação
Estudos.go- Arquivo principal com 4213 linhas de códigoexercicios/- 100+ exercícios organizados por temaREADME.md- Documentação detalhada dos exercícios
Objetivo: Desenvolver uma API RESTful completa para gerenciamento de tarefas.
Curso-API-GO/
├── 📄 main.go # Ponto de entrada
├── 📁 handlers/ # Controladores HTTP
├── 📁 models/ # Modelos de dados
├── 📁 db/ # Configuração do banco
├── 📁 Configs/ # Configurações
└── 📄 config.toml # Arquivo de configuração
- Go 1.21+ - Linguagem principal
- Chi Router - Roteamento HTTP
- PostgreSQL - Banco de dados
- Viper - Gerenciamento de configurações
- Docker - Containerização
- ✅ CRUD Completo - Criar, ler, atualizar, deletar tarefas
- ✅ Validação de Dados - Validação de entrada
- ✅ Configuração Flexível - Arquivo TOML
- ✅ Logs Estruturados - Sistema de logging
- ✅ Health Check - Monitoramento
- ✅ Docker Support - Containerização
GET /todos # Listar todas as tarefas
GET /todos/:id # Buscar tarefa por ID
POST /todos # Criar nova tarefa
PUT /todos/:id # Atualizar tarefa
DELETE /todos/:id # Deletar tarefa
GET /health # Health check
Objetivo: Desenvolver uma API para gerenciamento de fitness com usuários e medições.
fitness-api/
├── 📄 main.go # Ponto de entrada
├── 📁 internal/
│ ├── 📁 handlers/ # Controladores
│ ├── 📁 models/ # Modelos
│ └── 📁 repositories/ # Acesso a dados
├── 📁 db/ # Configuração DB
└── 📄 schema.sql # Schema do banco
- Go 1.24.4 - Linguagem principal
- Echo Framework - Framework web
- PostgreSQL - Banco de dados
- Repository Pattern - Padrão de acesso a dados
- 👥 Gestão de Usuários - CRUD de usuários
- 📊 Medições de Fitness - Peso, altura, gordura corporal
- 🔐 Validação de Dados - Validação de entrada
- 📈 Relatórios - Histórico de medições
- 🏗️ Arquitetura Limpa - Separação de responsabilidades
GET /users # Listar usuários
GET /users/:id # Buscar usuário
POST /users # Criar usuário
PUT /users/:id # Atualizar usuário
DELETE /users/:id # Deletar usuário
GET /measurements # Listar medições
GET /measurements/:id # Buscar medição
POST /measurements # Criar medição
PUT /measurements/:id # Atualizar medição
DELETE /measurements/:id # Deletar medição
- Sintaxe e Estrutura - Como escrever código Go
- Tipos de Dados - Int, float, string, bool, etc.
- Variáveis e Constantes - Declaração e escopo
- Operadores - Aritméticos, lógicos, de atribuição
- Controle de Fluxo - if, else, switch, loops
- Arrays e Slices - Coleções de dados
- Maps - Estruturas chave-valor
- Structs - Estruturas personalizadas
- Interfaces - Contratos para tipos
- Ponteiros - Referências de memória
- Goroutines - Execução concorrente
- Canais - Comunicação entre goroutines
- Sincronização - WaitGroups, Mutex, Atomic
- Padrões - Worker pools, fan-out/fan-in
- Context - Cancelamento e timeouts
- HTTP/HTTPS - Protocolos web
- REST APIs - Arquitetura RESTful
- JSON - Serialização de dados
- Middleware - Interceptadores HTTP
- Roteamento - Gerenciamento de rotas
- PostgreSQL - Banco relacional
- SQL - Linguagem de consulta
- Drivers - Conexão com banco
- Migrations - Controle de schema
- ORM Patterns - Padrões de acesso a dados
- Testes Unitários - Testes automatizados
- Benchmarks - Medição de performance
- Testes em Tabela - Testes parametrizados
- Cobertura - Cobertura de testes
- Ferramentas - go fmt, go vet, golint
- Go 1.21+ instalado
- PostgreSQL (para os projetos de API)
- Git para controle de versão
- Editor de código (VS Code, GoLand, etc.)
# Navegar para o diretório
cd Estudos-Realizados/Curso_Aprenda_GO
# Executar um exercício específico
go run exercicios/aula2_hello_world.go
# Executar todos os testes
go test ./exercicios
# Executar o arquivo principal
go run Estudos.go# Navegar para o diretório
cd Estudos-Realizados/Curso-API-GO
# Instalar dependências
go mod tidy
# Configurar banco de dados
cp config.example.toml config.toml
# Editar config.toml com suas configurações
# Executar a API
go run main.go# Navegar para o diretório
cd Estudos-Realizados/API-Kelche/fitness-api
# Instalar dependências
go mod tidy
# Configurar banco de dados
psql -d fitness_api -f schema.sql
# Executar a API
go run main.go- Sintaxe e estrutura da linguagem
- Tipos de dados fundamentais
- Controle de fluxo
- Estruturas de dados básicas
- Funções e métodos
- Ponteiros e referências
- Interfaces e polimorfismo
- Tratamento de erros
- JSON e serialização
- Testes unitários
- Concorrência com goroutines
- Canais e sincronização
- Desenvolvimento de APIs REST
- Integração com banco de dados
- Arquitetura de software
- Padrões de projeto
- Performance e otimização
- Containerização
- Monitoramento e logs
- Boas práticas de desenvolvimento
- ✅ Domínio completo da sintaxe Go
- ✅ Compreensão profunda de concorrência
- ✅ Desenvolvimento de APIs RESTful
- ✅ Integração com bancos de dados
- ✅ Testes e qualidade de código
- ✅ Arquitetura de software
- ✅ 100+ Exercícios práticos
- ✅ API Todo com Chi Router
- ✅ API Fitness com Echo Framework
- ✅ Padrões de projeto implementados
- ✅ Testes automatizados escritos
- ✅ Go Modules - Gerenciamento de dependências
- ✅ Chi Router - Roteamento HTTP
- ✅ Echo Framework - Framework web
- ✅ PostgreSQL - Banco de dados
- ✅ Docker - Containerização
- ✅ Testes - Testes unitários e benchmarks
- "The Go Programming Language" - Alan Donovan & Brian Kernighan
- "Go in Action" - William Kennedy
- "Concurrency in Go" - Katherine Cox-Buday
Este repositório é pessoal e documenta minha jornada de aprendizado em Go. Sinta-se à vontade para:
- 🔍 Explorar os códigos e exemplos
- 📝 Sugerir melhorias ou correções
- 🚀 Inspirar-se para seus próprios projetos
- 📚 Usar como referência de estudo
Este projeto está sob a licença MIT. Veja o arquivo LICENSE para mais detalhes.
Desenvolvido com ❤️ durante a jornada de aprendizado em Go
"A melhor forma de aprender é fazendo"