Categoria: Go

Go nasceu no Google para escrever software de servidor que compila rápido e escala bem. Aposta na simplicidade — poucas palavras-chave, biblioteca padrão robusta e concorrência nativa por goroutines e canais — e entrega um binário único, sem dependências, o que a tornou padrão em ferramentas de infraestrutura como Docker e Kubernetes. A documentação oficial fica em go.dev.

Go

Design com interfaces

Esta aula explora o design de interfaces em Go, focando em interfaces pequenas, o princípio 'aceite interfaces, retorne structs', e a composição de interfaces. Inclui exemplos práticos, referências e exercícios para fixar o conteúdo.

Lido
Go

Organização e camadas

Esta aula explora como organizar um projeto Go em camadas, aplicando separação de responsabilidades, injeção de dependência manual e organização por feature, além de discutir os trade-offs envolvidos. O objetivo é capacitar o aluno a estruturar aplicações de forma escalável e de fácil manutenção.

Lido
Go

Configuração de aplicações

Esta aula explora as principais formas de configurar aplicações em Go: variáveis de ambiente, flags de linha de comando e arquivos de configuração. Você aprenderá a usar a biblioteca padrão e bibliotecas populares, além de boas práticas para manter a configuração organizada e segura.

Lido
Go

Otimização de performance

Nesta aula, você aprenderá técnicas essenciais para otimizar a performance de programas Go, focando na redução de alocações de memória, no uso de sync.Pool para reutilizar objetos, na pré-alocação de slices e mapas, e na importância de criar benchmarks antes de otimizar. Ao final, você terá um guia prático para identificar gargalos e aplicar melhorias com segurança.

Lido
Go

Padrões de projeto em Go

Esta aula explora padrões de projeto em Go, apresentando os padrões Functional Options, Strategy e Factory, com exemplos práticos e discussão sobre a abordagem idiomática versus a clássica. O objetivo é mostrar como aplicar esses padrões de forma eficiente no contexto da linguagem Go.

Lido
Go

Embutindo arquivos (embed)

Nesta aula, você aprenderá a embutir arquivos estáticos no binário Go usando a diretiva //go:embed, explorando como servir assets em aplicações web, casos de uso práticos e as limitações dessa funcionalidade. O conteúdo inclui exemplos de código, exercícios com respostas e referências para aprofundamento.

Lido
Go

Graceful shutdown

Esta aula ensina como implementar o graceful shutdown em aplicações Go, cobrindo o tratamento de sinais do sistema operacional, o encerramento elegante de servidores HTTP e o uso de context para coordenar a finalização. Inclui exemplos práticos, boas práticas e exercícios com respostas.

Lido
Go

Logging estruturado (slog)

Esta aula ensina logging estruturado em Go com o pacote padrão log/slog, cobrindo desde a criação de loggers básicos até o uso de níveis, handlers personalizados e boas práticas para produzir logs consistentes e úteis em produção.

Lido
Go

Build e cross-compilation

Nesta aula, você aprenderá a compilar programas Go, explorando o comando go build, as variáveis de ambiente GOOS e GOARCH para cross-compilation, as flags de build disponíveis e a geração de binários estáticos. Ao final, você será capaz de gerar executáveis para diferentes plataformas e otimizar o processo de build.

Lido
Go

Empacotando Go com Docker

Nesta aula, você aprenderá a empacotar aplicações Go com Docker, usando multi-stage builds, imagens mínimas e binários estáticos. Vamos explorar boas práticas para criar imagens pequenas, seguras e eficientes, com exemplos práticos de Dockerfile.

Lido
Go

Projeto: worker concorrente

Esta aula apresenta a construção de um worker concorrente em Go, explorando goroutines, channels, worker pools, graceful shutdown e uso de context. O aluno aprenderá a criar um sistema robusto de processamento paralelo com controle de cancelamento e encerramento gracioso.

Lido
Go

Projeto: coletor concorrente

Nesta aula, você construirá um coletor de dados concorrente em Go, aprendendo a realizar requisições HTTP simultâneas, aplicar limitação de taxa, agregar resultados e tratar erros de forma robusta. O projeto final combina esses conceitos em uma ferramenta prática e eficiente.

Lido