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

Interfaces

Esta aula aborda o conceito de interfaces em Go, incluindo definição, implementação implícita, interface vazia (any) e polimorfismo. Você aprenderá como as interfaces permitem escrever código flexível e reutilizável, com exemplos práticos e exercícios para fixação.

✓ Lido
Go

Embedding (composição)

Nesta aula, exploramos o conceito de embedding (composição) em Go, que permite reutilizar campos e métodos de structs e interfaces sem herança. Aprendemos como embedding de structs e interfaces funciona, como a promoção de métodos ocorre e como essa abordagem difere da herança tradicional de linguagens orientadas a objetos.

✓ Lido
Go

Interfaces avançado

Esta aula explora conceitos avançados de interfaces em Go, incluindo type assertions, type switches, composição de interfaces e boas práticas. O conteúdo é focado em aplicações práticas e exemplos de código para alunos intermediários.

✓ Lido
Go

Erros avançado

Esta aula aborda técnicas avançadas de tratamento de erros em Go, incluindo wrapping com %w, funções errors.Is e errors.As, criação de erros customizados e uso de sentinel errors. O conteúdo é prático e progressivo, com exemplos de código e exercícios para fixação.

✓ Lido
Go

A interface Stringer e fmt

Esta aula aborda a interface Stringer do Go, que permite controlar a representação textual de tipos personalizados. Exploramos os verbos de formatação do pacote fmt, como implementar o método String() e técnicas de debug com a interface GoStringer.

✓ Lido
Go

Tratamento de erros

Nesta aula, você aprenderá sobre o tratamento de erros em Go, incluindo o tipo error, o padrão if err != nil, como criar erros com errors.New e fmt.Errorf, e as práticas idiomáticas da linguagem. O conteúdo cobre desde conceitos básicos até boas práticas para escrever código robusto e claro.

✓ Lido
Go

Padrões com defer

Esta aula explora padrões de uso da instrução defer em Go, incluindo liberação de recursos, fechamento de arquivos e armadilhas comuns como loops e avaliação de argumentos.

✓ Lido
Go

Goroutines

Esta aula apresenta as goroutines em Go, explicando o que são, como criá-las com a palavra-chave 'go', suas diferenças em relação a threads do sistema operacional e seu ciclo de vida. O conteúdo inclui exemplos práticos, boas práticas e exercícios com respostas.

✓ Lido
Go

Channels

Esta aula aborda o conceito de channels em Go, explicando como criar, enviar e receber dados através de canais, incluindo canais com buffer e direção de canais. São apresentados exemplos práticos e exercícios para fixação.

✓ Lido
Go

A instrução select

A instrução select em Go permite que uma goroutine aguarde múltiplas operações de canais simultaneamente, funcionando como um switch para canais. Esta aula cobre multiplexação de canais, uso da cláusula default para operações não bloqueantes, implementação de timeouts com time.After e exemplos práticos de cada conceito.

✓ Lido
Go

Channels avançado

Esta aula explora conceitos avançados de channels em Go, incluindo fechamento de channels, uso de range para iteração, nil channels e padrões comuns de concorrência. O conteúdo é prático, com exemplos de código e exercícios resolvidos.

✓ Lido
Go

O pacote sync

Esta aula explora o pacote sync da biblioteca padrão de Go, abordando WaitGroup, Mutex, RWMutex e Once. Aprenda a sincronizar goroutines e gerenciar concorrência de forma eficiente, entendendo quando usar essas primitivas em vez de channels.

✓ Lido
Go

O pacote context

Esta aula aborda o pacote context da linguagem Go, explicando como gerenciar cancelamentos, timeouts e deadlines em operações concorrentes. A propagação de contextos e boas práticas são discutidas com exemplos práticos para garantir código eficiente e seguro.

✓ Lido
Go

Condições de corrida e o race detector

Esta aula aborda condições de corrida (data races) em Go, explicando o que são, como detectá-las com o race detector integrado, e como prevenir usando sincronização e boas práticas de memória compartilhada.

✓ Lido
Go

Padrões de concorrência

Esta aula aborda os principais padrões de concorrência em Go: worker pool, fan-in/fan-out, pipeline e rate limiting. Cada padrão é explicado com exemplos práticos de código, destacando o uso de goroutines e canais para construir programas concorrentes eficientes e controlados.

✓ Lido