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

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
Go

Pacotes

Esta aula aborda o sistema de pacotes em Go, incluindo declaração de pacotes, visibilidade de identificadores, importação de pacotes e organização de código. Você aprenderá a estruturar projetos Go de forma modular e reutilizável.

Lido
Go

Condições de corrida e o race detector

Nesta aula, você aprenderá o que são condições de corrida (data races) em Go, como detectá-las com a ferramenta race detector e como evitá-las usando sincronização adequada. Abordaremos o comando 'go test -race', os mecanismos de sincronização como canais e mutexes, e a filosofia de 'compartilhar memória comunicando-se'.

Lido
Go

Estrutura de projetos

Esta aula aborda a estrutura idiomática de projetos em Go, explicando a organização de diretórios como cmd/ e internal/, além de boas práticas para manter o código modular e reutilizável.

Lido
Go

Go Modules

Esta aula aborda Go Modules, o sistema oficial de gerenciamento de dependências do Go. Você aprenderá a estrutura dos arquivos go.mod e go.sum, como usar go get, versionamento semântico e gerenciamento de dependências.

Lido
Go

init e ordem de inicialização

Nesta aula, exploramos a função init() em Go, sua ordem de execução em relação a variáveis de pacote e construtores, e os cuidados necessários ao utilizá-la. Compreender a inicialização é crucial para evitar dependências ocultas e efeitos colaterais inesperados.

Lido
Go

Os pacotes io e bufio

Esta aula explora os pacotes io e bufio da biblioteca padrão de Go, apresentando interfaces como Reader e Writer, a função io.Copy, o papel do buffering e a composição de streams. Você aprenderá a manipular fluxos de dados de forma eficiente e idiomática.

Lido