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

Erros avançado

Nesta aula avançada sobre erros em Go, exploramos o wrapping de erros com %w, as funções errors.Is e errors.As para comparação e desempacotamento, a criação de erros customizados com structs, e o padrão de erros sentinela. Com exemplos práticos, você aprenderá a construir e gerenciar hierarquias de erros de forma robusta.

✓ Lido
Go

Tratamento de erros

Nesta aula, exploramos o tratamento de erros em Go, que é explícito e baseado no tipo error. Aprendemos a usar a verificação if err != nil, criar erros com errors.New e fmt.Errorf, e seguir as práticas idiomáticas da linguagem.

✓ Lido
Go

Goroutines

Esta aula apresenta as goroutines, a unidade fundamental de concorrência leve em Go. Você aprenderá como criar goroutines com a palavra-chave 'go', entenderá como elas se comparam a threads do sistema operacional e explorará seu ciclo de vida, incluindo sincronização básica com WaitGroups.

✓ Lido
Go

Channels

Esta aula aborda channels em Go, um mecanismo de comunicação entre goroutines. Você aprenderá a criar channels, enviar e receber dados, usar buffers e controlar a direção dos channels para concorrência segura.

✓ 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, comportamento de nil channels e padrões comuns como fan-in e fan-out. O aluno aprenderá a controlar o ciclo de vida de channels e a evitar deadlocks.

✓ Lido
Go

Padrões com defer

Nesta aula, exploramos o uso da palavra-chave defer em Go para gerenciar recursos de forma elegante e segura, cobrindo desde liberação de recursos e fechamento de arquivos até armadilhas comuns como loops e avaliação de argumentos. Inclui exemplos práticos e exercícios para fixação.

✓ Lido
Go

O pacote context

Nesta aula, exploramos o pacote context da linguagem Go, que permite controlar cancelamentos, timeouts e deadlines em operações concorrentes. Aprendemos como propagar contextos entre goroutines e boas práticas para seu uso eficiente.

✓ Lido
Go

O pacote sync

Esta aula explora o pacote sync de Go, abordando WaitGroup, Mutex, RWMutex e Once para sincronização concorrente. Aprenda quando usar essas primitivas em vez de channels, com exemplos práticos e boas práticas.

✓ Lido
Go

A instrução select

A instrução select em Go permite que uma goroutine aguarde múltiplas operações de canais simultaneamente, executando o caso que estiver pronto. Esta aula cobre multiplexação de canais, uso da cláusula default para evitar bloqueios, implementação de timeouts com time.After e exemplos práticos.

✓ Lido
Go

Padrões de concorrência

Esta aula ensina 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 sistemas concorrentes eficientes.

✓ Lido