Ebook gratuito sobre Go (Golang) com fundamentos, módulos, testes, concorrência e organização de projetos para programar com segurança.
Conteúdo do ebook gratuito
-
Ambiente de Desenvolvimento em Go: instalação, GOPATH, GOROOT e editor
+ Exercício: Ao instalar uma ferramenta com go install (por exemplo, para organizar imports), qual configuração costuma ser necessária para conseguir executá-la diretamente no terminal? -
Go Toolchain na prática: go run, go build, go test, go fmt e go vet
+ Exercício: Ao executar um programa com go run e precisar passar argumentos para o seu binário (sem confundir com flags do comando go), qual é a forma recomendada? -
Módulos e pacotes em Go: go.mod, dependências e versionamento
+ Exercício: Ao remover o uso de um pacote externo do seu código Go, qual é o fluxo mais adequado para garantir que as dependências em go.mod e go.sum sejam atualizadas corretamente?
-
Sintaxe essencial de Go: variáveis, constantes, controle de fluxo e arrays/slices
+ Exercício: Ao fazer a = append(a, 99) em um subslice criado a partir de s, qual prática ajuda a evitar que o append sobrescreva elementos “depois” no backing array original? -
Mapas, strings e manipulação de texto em Go
+ Exercício: Ao contar a frequência de palavras em um texto em Go, qual abordagem ajuda a evitar diferenças por maiúsculas/minúsculas e também impede que pontuação quebre a contagem? -
Tipos em Go: aliases, conversões, ponteiros e composição
+ Exercício: Em Go, qual afirmação descreve corretamente a diferença entre um tipo definido e um alias de tipo? -
Structs em Go: modelagem, tags e boas práticas de inicialização
+ Exercício: Em um endpoint de atualização parcial (patch) via JSON, como diferenciar “campo não enviado” de “campo enviado com valor zero” para evitar problemas com omitempty? -
Funções em Go: múltiplos retornos, variádicas, closures e defer
+ Exercício: Ao chamar uma função em Go que retorna (valor, error), qual prática é mais idiomática quando err != nil? -
Métodos e interfaces em Go: receivers, polimorfismo e design idiomático
+ Exercício: Em Go, ao implementar um método que precisa registrar mensagens em um slice dentro de um struct, qual escolha de receiver é mais adequada e por quê? -
Erros em Go: padrão error, wrapping, sentinelas e mensagens úteis
+ Exercício: Ao propagar um erro entre camadas em Go, qual abordagem mantém a causa original inspecionável e ainda adiciona contexto útil para diagnóstico?
-
Testes básicos em Go: pacote testing, table-driven tests e cobertura
+ Exercício: Em um teste table-driven que usa t.Run com uma função anônima, qual prática ajuda a evitar problemas ao usar a variável do loop dentro do subteste? -
Entrada e saída em Go: arquivos, diretórios e leitura eficiente
+ Exercício: Ao processar um arquivo de log grande, qual abordagem mantém baixo consumo de memória e aproveita I/O eficiente em Go? -
JSON em Go: encoding/json, marshaling, unmarshaling e validação
+ Exercício: Ao decodificar JSON para uma struct em Go, quando é mais indicado configurar o decoder para falhar em campos desconhecidos (DisallowUnknownFields)?
-
Concorrência em Go: goroutines, channels e padrões de sincronização
+ Exercício: Ao criar várias goroutines dentro de um loop, qual abordagem evita que todas imprimam o mesmo valor por causa da captura da variável do loop? -
Contexto e cancelamento em Go: context.Context em operações concorrentes
+ Exercício: Ao executar várias goroutines com um contexto derivado por WithTimeout, qual abordagem melhor garante que o sistema pare rapidamente no primeiro erro crítico e evite goroutines bloqueadas ao enviar resultados? -
Estrutura de projetos em Go: convenções, internal, cmd e organização por pacotes
+ Exercício: Em um projeto Go que segue as convenções de cmd/ e internal/, qual organização melhor evita ciclos de importação e mantém limites claros entre entrada (CLI) e regras de negócio? -
Boas práticas de código em Go: formatação, comentários, documentação e lint básico
+ Exercício: Ao rodar gofmt em um repositório Go, qual prática ajuda a facilitar a revisão quando a formatação gera um diff grande sem alterações de lógica? -
Projeto final em Go: aplicação completa com módulos, testes, JSON, I/O e concorrência
+ Exercício: No pipeline concorrente do processamento de arquivos, qual é a principal razão para usar um agregador único que consolida os resultados no Report?
Sobre o Ebook gratuito
Go (Golang) para Iniciantes: Fundamentos, Concorrência e Estrutura de Projetos
Este ebook gratuito apresenta uma base prática para quem deseja programar em Go, uma linguagem reconhecida pela simplicidade, desempenho e recursos nativos para aplicações concorrentes. O material orienta o leitor desde a preparação do ambiente até a construção de uma aplicação organizada e testável.
Aprenda a programar com uma abordagem idiomática
Go possui uma sintaxe objetiva e convenções bem definidas. Ao longo do ebook, você entenderá como escrever código legível, trabalhar com tipos, estruturar dados, tratar falhas e aproveitar as ferramentas oficiais da linguagem para formatar, validar, compilar e testar projetos.
O conteúdo também explora a organização moderna de dependências por módulos e a criação de pacotes com responsabilidades claras. Dessa forma, o aprendizado vai além de exemplos isolados e aproxima você de práticas utilizadas no desenvolvimento profissional.
Concorrência e aplicações reais
Um dos diferenciais de Go é tornar a concorrência mais acessível por meio de goroutines, channels e mecanismos de sincronização. O ebook explica como coordenar tarefas simultâneas, evitar bloqueios desnecessários e utilizar contextos para controlar cancelamentos e prazos de execução.
Do código ao projeto final
Com exemplos voltados à prática, o material mostra como lidar com arquivos, dados JSON, testes e organização de diretórios. Ao final, você terá referências para desenvolver projetos em Go com mais segurança, clareza e consistência.
Ideal para estudantes e pessoas que desejam iniciar uma trajetória com Go e seus principais padrões de desenvolvimento.
Qual é a diferença entre GOPATH e Go Modules?
GOPATH é o modelo antigo de organização; Go Modules gerencia dependências e versões por projeto com o arquivo go.mod.
Para que servem goroutines e channels em Go?
Goroutines executam tarefas concorrentemente, enquanto channels permitem a comunicação e sincronização entre elas.
Como executar testes em um projeto Go?
Use o comando go test, normalmente com ./... para testar todos os pacotes do projeto.
Este Ebook inclui:
18 capítulos de conteúdo
Certificado digital de conclusão de curso ( Gratuito )
Exercícios para treinar seus conhecimentos
100% gratuito, do conteúdo ao certificado
Pronto para começar?
No aplicativo você também encontrará...
+ de 5.000 cursos gratuitos
Programação, Inglês, Marketing Digital e muito mais! Aprenda o que quiser, gratuitamente.
Plano de estudos com IA
A Inteligência Artificial do nosso aplicativo pode criar um cronograma de estudos para o curso que você escolher.
Do zero ao Sucesso profissional
Melhore seu currículo com nosso Certificado gratuito e depois utilize nossa Inteligência Artificial para buscar seu emprego dos sonhos.
Você também pode utilizar o QR Code ou os Links abaixo
























