Curso online gratuitoProgramação em Go (Golang) em Português: Do Zero ao Ninja
Duração do curso online: 21 horas e 17 minutos
Novo
Curso gratuito de Go em português: do básico ao avançado, com prática, estruturas de dados, concorrência, canais, erros, testes e aplicações.
Neste curso gratuito, aprenda sobre
Introdução e Visão Geral do Curso
Variáveis, Valores e Primeiros Conceitos em Go
Exercícios Iniciais (Nível 1)
Fundamentos da Programação em Go
Exercícios de Fundamentos e Tipos (Nível 2)
Fluxo de Controle: Loops e Condicionais
Exercícios de Controle de Fluxo (Nível 3)
Estruturas de Dados: Arrays, Slices e Maps
Exercícios de Estruturas de Dados (Nível 4)
Structs e Composição de Tipos
Exercícios com Structs (Nível 5)
Funções, Métodos, Interfaces e Padrões Funcionais
Exercícios de Funções e Interfaces (Nível 6)
Ponteiros (Pointers) em Go
Exercícios com Ponteiros (Nível 7)
Aplicações Práticas: JSON, I/O, Ordenação e Segurança
Exercícios de Aplicações (Nível 8)
Concorrência: Goroutines e Sincronização
Ambiente de Desenvolvimento e Ferramentas (Go, IDE e GitHub)
Exercícios de Concorrência e Ferramentas (Nível 9)
Canais e Padrões de Comunicação entre Goroutines
Exercícios com Canais e Goroutines (Nível 10)
Tratamento de Erros e Recuperação
Exercícios de Tratamento de Erros (Nível 11)
Documentação em Go (go doc, godoc e Boas Práticas)
Exercícios de Documentação (Nível 12)
Testes em Go
Descrição do curso
Programação em Go (Golang) em Português: Do Zero ao Ninja é um curso online gratuito para quem quer aprender a linguagem Go desde os primeiros passos até conceitos avançados usados no dia a dia do desenvolvimento.
Ao longo das aulas, você constrói uma base sólida de lógica e fundamentos da linguagem, entendendo como variáveis e tipos funcionam, como lidar com constantes e operações, e como estruturar o código de forma clara e eficiente. O curso também aprofunda o uso de estruturas de dados e a organização de programas, ajudando a evoluir de exemplos simples para soluções mais completas.
Você pratica a tomada de decisões e repetição com fluxo de controle, aprende a modelar dados com structs e a criar código reutilizável com funções, métodos e interfaces. O conteúdo também aborda ponteiros, tratamento de erros e boas práticas de documentação, favorecendo um aprendizado que se aproxima da rotina profissional.
Para quem deseja ir além do básico, há foco em aplicações comuns, como trabalhar com JSON, ordenação de dados e uso de recursos da biblioteca padrão. Um diferencial importante é a parte de concorrência, explorando goroutines, sincronização e canais, permitindo compreender como Go facilita a criação de programas performáticos e escaláveis. Ao final, você também entra em testes e ferramentas do ecossistema, fortalecendo seu caminho para desenvolver projetos reais em Go.
Exercício: Qual é o principal objetivo do Go Playground ao começar a praticar Go?
Aula em vídeo: Cap. 2 – Variáveis, Valores13m
Aula em vídeo: Cap. 2 – Variáveis, Valores19m
Aula em vídeo: Cap. 2 – Variáveis, Valores05m
Exercício: Em Go, qual é a forma correta de declarar uma variável que precisa ser acessível fora de um code block (escopo mais amplo)?
Aula em vídeo: Cap. 2 – Variáveis, Valores06m
Aula em vídeo: Cap. 2 – Variáveis, Valores06m
Aula em vídeo: Cap. 2 – Variáveis, Valores10m
Exercício: Qual é a principal diferença entre usar Println e Sprintln no pacote fmt em Go?
Aula em vídeo: Cap. 2 – Variáveis, Valores04m
Aula em vídeo: Cap. 2 – Variáveis, Valores05m
Aula em vídeo: Cap. 3 – Exercícios: Nível #1 – 103m
Exercício: Qual é a tarefa principal do exercício apresentado envolvendo o operador curto de declaração em Go?
Aula em vídeo: Cap. 3 – Exercícios: Nível #1 – 202m
Aula em vídeo: Cap. 3 – Exercícios: Nível #1 – 302m
Aula em vídeo: Cap. 3 – Exercícios: Nível #1 – 402m
Aula em vídeo: Cap. 3 – Exercícios: Nível #1 – 504m
Aula em vídeo: Cap. 3 – Exercícios: Nível #1 – 608m
Aula em vídeo: Cap. 4 – Fundamentos da Programação – 1. Tipo booleano06m
Exercício: Qual é o resultado (tipo e valores possíveis) de uma expressão com operadores relacionais em Go?
Aula em vídeo: Cap. 4 – Fundamentos da Programação – 2. Como os computadores funcionam17m
Aula em vídeo: Cap. 4 – Fundamentos da Programação – 3. Tipos numéricos14m
Aula em vídeo: Cap. 4 – Fundamentos da Programação – 4. Overflow02m
Exercício: Ao somar 1 ao valor máximo de um tipo numérico uint16 em Go, o que acontece?
Aula em vídeo: Cap. 4 – Fundamentos da Programação – 5. Tipo string (cadeias de caracteres)10m
Aula em vídeo: Cap. 4 – Fundamentos da Programação – 6. Sistemas numéricos10m
Aula em vídeo: Cap. 4 – Fundamentos da Programação – 7. Constantes06m
Exercício: Em Go, qual afirmação descreve corretamente uma constante sem tipo explícito (untyped constant)?
Aula em vídeo: Cap. 4 – Fundamentos da Programação – 8. Iota04m
Aula em vídeo: Cap. 4 – Fundamentos da Programação – 9. Deslocamento de bits07m
Aula em vídeo: Cap. 5 – Exercícios: Nível #2 – 102m
Exercício: Em Go, quais verbos de formatação do fmt permitem imprimir um número em decimal, binário e hexadecimal (minúsculo), respectivamente?
Aula em vídeo: Cap. 5 – Exercícios: Nível #2 – 204m
Aula em vídeo: Cap. 5 – Exercícios: Nível #2 – 301m
Aula em vídeo: Cap. 5 – Exercícios: Nível #2 – 402m
Exercício: Em Go, ao deslocar 1 bit para a esquerda (<< 1) o valor inteiro 200, qual será o resultado em decimal?
Aula em vídeo: Cap. 5 – Exercícios: Nível #2 – 500m
Aula em vídeo: Cap. 5 – Exercícios: Nível #2 – 601m
Aula em vídeo: Cap. 5 – Exercícios: Nível #2 – 707m
Exercício: Em Go, ao usar o operador curto de declaração (:=), é necessário especificar explicitamente o tipo da variável?
Aula em vídeo: Cap. 6 – Fluxo de Controle – 1. Entendendo fluxo de controle06m
Aula em vídeo: Cap. 6 – Fluxo de Controle – 2. Loops: inicialização, condição, pós04m
Aula em vídeo: Cap. 6 – Fluxo de Controle – 3. Loops: nested loop (repetição hierárquica)06m
Aula em vídeo: Cap. 6 – Fluxo de Controle – 4. Loops: a declaração for10m
Aula em vídeo: Cap. 6 – Fluxo de Controle – 5. Loops: break05m
Aula em vídeo: Cap. 6 – Fluxo de Controle – 6. Loops: utilizando ascii06m
Exercício: Em Go, ao iterar de 33 até 122 e querer exibir o caractere correspondente a cada número (Unicode), qual abordagem produz apenas o caractere, sem informações extras?
Aula em vídeo: Cap. 6 – Fluxo de Controle – 7. Condicionais: a declaração if03m
Aula em vídeo: Cap. 6 – Fluxo de Controle – 8. Condicionais: if, else if, else03m
Aula em vídeo: Cap. 6 – Fluxo de Controle – 9. Condicionais: a declaração switch15m
Exercício: No Go, como o switch se comporta ao encontrar o primeiro case verdadeiro?
Aula em vídeo: Cap. 6 – Fluxo de Controle – 10. Condicionais: a declaração switch pt. 205m
Aula em vídeo: Cap. 6 – Fluxo de Controle – 11. Operadores lógicos condicionais06m
Aula em vídeo: Cap. 7 – Exercícios: Nível #3 – 102m
Exercício: Em Go, qual laço é mais apropriado para imprimir todos os números de 1 a 10.000 no console?
Aula em vídeo: Cap. 7 – Exercícios: Nível #3 – 203m
Aula em vídeo: Cap. 7 – Exercícios: Nível #3 – 302m
Aula em vídeo: Cap. 7 – Exercícios: Nível #3 – 402m
Exercício: Em Go, ao usar um for sem condição (loop infinito), como você faz para parar o laço quando o ano atingir o limite desejado?
Aula em vídeo: Cap. 7 – Exercícios: Nível #3 – 501m
Aula em vídeo: Cap. 7 – Exercícios: Nível #3 – 601m
Aula em vídeo: Cap. 7 – Exercícios: Nível #3 – 701m
Exercício: Em Go, qual estrutura é usada para encadear condições após um if, incluindo um caso padrão?
Aula em vídeo: Cap. 7 – Exercícios: Nível #3 – 802m
Aula em vídeo: Cap. 7 – Exercícios: Nível #3 – 903m
Aula em vídeo: Cap. 7 – Exercícios: Nível #3 – 1003m
Exercício: Em Go, qual é o resultado da expressão: true && false?
Aula em vídeo: Cap. 8 – Agrupamentos de Dados – 1. Array07m
Aula em vídeo: Cap. 8 – Agrupamentos de Dados – 2. Slice: literal composta07m
Aula em vídeo: Cap. 8 – Agrupamentos de Dados – 3. Slice: for range09m
Exercício: Em Go, ao usar for ... range para percorrer um slice, quais valores são obtidos a cada iteração?
Aula em vídeo: Cap. 8 – Agrupamentos de Dados – 4. Slice: fatiando ou deletando de uma fatia11m
Aula em vídeo: Cap. 8 – Agrupamentos de Dados – 5. Slice: anexando a uma slice08m
Aula em vídeo: Cap. 8 – Agrupamentos de Dados – 6. Slice: make09m
Exercício: Em Go, por que usar make([]T, len, cap) pode melhorar a performance ao trabalhar com slices?
Aula em vídeo: Cap. 8 – Agrupamentos de Dados – 7. Slice: slice multi-dimensional11m
Aula em vídeo: Cap. 8 – Agrupamentos de Dados – 8. Slice: a surpresa do array subjacente07m
Aula em vídeo: Cap. 8 – Agrupamentos de Dados – 9. Maps: introdução09m
Exercício: Em Go, ao acessar um valor de um map, para que serve a expressão “vírgula ok” (comma ok idiom)?
Aula em vídeo: Cap. 8 – Agrupamentos de Dados – 10. Maps: range06m
Aula em vídeo: Cap. 9 – Exercícios: Nível #4 – 102m
Aula em vídeo: Cap. 9 – Exercícios: Nível #4 – 201m
Aula em vídeo: Cap. 9 – Exercícios: Nível #4 – 305m
Aula em vídeo: Cap. 9 – Exercícios: Nível #4 – 402m
Aula em vídeo: Cap. 9 – Exercícios: Nível #4 – 503m
Exercício: Em Go, ao fazer um recorte (slice) como x[a:b], qual afirmação descreve corretamente os elementos incluídos?
Aula em vídeo: Cap. 9 – Exercícios: Nível #4 – 604m
Aula em vídeo: Cap. 9 – Exercícios: Nível #4 – 706m
Aula em vídeo: Cap. 9 – Exercícios: Nível #4 – 806m
Exercício: Em Go, qual tipo de dado é mais adequado para criar um mapa onde a chave é uma string (sobrenome nome) e o valor é uma lista de itens (ex.: álbuns ou hobbies favoritos)?
Aula em vídeo: Cap. 9 – Exercícios: Nível #4 – 902m
Aula em vídeo: Cap. 9 – Exercícios: Nível #4 – 1001m
Aula em vídeo: Cap. 10 – Structs – 1. Struct04m
Exercício: Em Go (Golang), qual é a principal vantagem de usar struct?
Aula em vídeo: Cap. 12 – Funções – 7. Func como expressão03m
Aula em vídeo: Cap. 12 – Funções – 8. Retornando uma função05m
Exercício: Em Go, quando uma função retorna outra função, como você executa imediatamente a função retornada sem armazená-la em uma variável intermediária?
Aula em vídeo: Cap. 12 – Funções – 9. Callback04m
Aula em vídeo: Cap. 12 – Funções – 10. Closure04m
Aula em vídeo: Cap. 12 – Funções – 11. Recursividade14m
Exercício: Em Go, por que uma função de fatorial é considerada recursiva?
Aula em vídeo: Cap. 13 – Exercícios: Nível #6 – 101m
Aula em vídeo: Cap. 13 – Exercícios: Nível #6 – 205m
Aula em vídeo: Cap. 13 – Exercícios: Nível #6 – 301m
Aula em vídeo: Cap. 13 – Exercícios: Nível #6 – 405m
Aula em vídeo: Cap. 13 – Exercícios: Nível #6 – 512m
Aula em vídeo: Cap. 13 – Exercícios: Nível #6 – 600m
Aula em vídeo: Cap. 13 – Exercícios: Nível #6 – 701m
Aula em vídeo: Cap. 13 – Exercícios: Nível #6 – 801m
Aula em vídeo: Cap. 13 – Exercícios: Nível #6 – 903m
Exercício: Em Go, qual alternativa descreve corretamente como passar uma função como argumento para outra função (callback)?
Aula em vídeo: Cap. 13 – Exercícios: Nível #6 – 1003m
Aula em vídeo: Cap. 13 – Exercícios: Nível #6 – 1103m
Aula em vídeo: Cap. 14 – Ponteiros – 1. O que são ponteiros?06m
Exercício: Em Go (Golang), o que é um ponteiro?
Aula em vídeo: Cap. 14 – Ponteiros – 2. Quando usar ponteiros06m
Aula em vídeo: Cap. 15 – Exercícios: Nível #7 – 101m
Aula em vídeo: Cap. 15 – Exercícios: Nível #7 – 205m
Exercício: Em Go, qual é o objetivo de passar um ponteiro para uma struct (ex.: *Pessoa) como parâmetro de uma função?
Exercício: Ao usar json.Unmarshal em Go, qual condição é obrigatória para que os dados do JSON sejam preenchidos corretamente na variável de destino?
Aula em vídeo: Cap. 16 – Aplicações – 4. A interface Writer13m
Aula em vídeo: Cap. 16 – Aplicações – 5. O pacote sort12m
Aula em vídeo: Cap. 16 – Aplicações – 6. Customizando o sort20m
Exercício: Para usar a função sort.Sort em um tipo personalizado (ex.: um slice de carros), quais métodos devem ser implementados para satisfazer a interface sort.Interface?
Aula em vídeo: Cap. 16 – Aplicações – 7. bcrypt20m
Aula em vídeo: Cap. 17 – Exercícios: Nível #8 – 105m
Aula em vídeo: Cap. 17 – Exercícios: Nível #8 – 206m
Exercício: Ao converter JSON para uma struct em Go usando json.Unmarshal, por que o segundo argumento deve ser um ponteiro?
Aula em vídeo: Cap. 17 – Exercícios: Nível #8 – 307m
Aula em vídeo: Cap. 17 – Exercícios: Nível #8 – 402m
Aula em vídeo: Cap. 17 – Exercícios: Nível #8 – 521m
Exercício: Para ordenar um slice de structs (ex.: usuários) por um campo como idade em Go, qual é a abordagem correta?
Aula em vídeo: Cap. 18 – Concorrência – 1. Concorrência vs. paralelismo07m
Aula em vídeo: Cap. 18 – Concorrência – 2. Goroutines13m
Aula em vídeo: Cap. 18 – Concorrência – 3. Discussão: Condição de corrida09m
Exercício: Em Go, qual abordagem é recomendada para evitar condições de corrida ao lidar com concorrência?
Aula em vídeo: Cap. 18 – Concorrência – 4. Na prática: Condição de corrida09m
Aula em vídeo: Cap. 18 – Concorrência – 5. Mutex03m
Aula em vídeo: Cap. 18 – Concorrência – 6. Atomic05m
Exercício: Em Go, qual é a forma correta de incrementar um contador de maneira atômica usando o pacote atomic?
Aula em vídeo: Cap. 19 – Ambiente de Desenvolvimento – 1. O terminal12m
Aula em vídeo: Cap. 19 – Ambiente de Desenvolvimento – 2. Go Workspace06m
Aula em vídeo: Cap. 19 – Ambiente de Desenvolvimento – 3. IDEs07m
Exercício: Qual é o objetivo principal de uma IDE (Ambiente Integrado de Desenvolvimento)?
Aula em vídeo: Cap. 19 – Ambiente de Desenvolvimento – 4. Comandos Go06m
Aula em vídeo: Cap. 19 – Ambiente de Desenvolvimento – 5. Repositórios no GitHub16m
Aula em vídeo: Cap. 19 – Ambiente de Desenvolvimento – 6. Explorando o GitHub04m
Exercício: Ao trabalhar com Git, qual comando é usado para clonar um repositório remoto para o seu computador?
Aula em vídeo: Cap. 19 – Ambiente de Desenvolvimento – 7. Compilação cruzada06m
Aula em vídeo: Cap. 19 – Ambiente de Desenvolvimento – 8. Pacotes11m
Aula em vídeo: Cap. 20 – Exercícios: Nível #9 – 110m
Aula em vídeo: Cap. 20 – Exercícios: Nível #9 – 211m
Aula em vídeo: Cap. 20 – Exercícios: Nível #9 – 308m
Aula em vídeo: Cap. 20 – Exercícios: Nível #9 – 401m
Exercício: Em Go, qual par de funções do pacote sync é usado para alocar e liberar o lock de um Mutex?
Aula em vídeo: Cap. 20 – Exercícios: Nível #9 – 505m
Aula em vídeo: Cap. 20 – Exercícios: Nível #9 – 604m
Aula em vídeo: Cap. 20 – Exercícios: Nível #9 – 701m
Exercício: Qual é a principal proposta do exercício final mencionado?
Aula em vídeo: Cap. 21 – Canais – 3. Range e close06m
Exercício: Ao usar for range para receber valores de um canal em Go, o que é necessário fazer para que o loop termine corretamente quando não houver mais valores?
Aula em vídeo: Cap. 21 – Canais – 4. Select19m
Aula em vídeo: Cap. 21 – Canais – 5. A expressão comma ok07m
Aula em vídeo: Cap. 21 – Canais – 6. Convergência20m
Exercício: Em Go, qual é o objetivo do padrão de concorrência chamado convergência (fan-in)?
Aula em vídeo: Cap. 21 – Canais – 7. Divergência18m
Aula em vídeo: Cap. 21 – Canais – 8. Context16m
Aula em vídeo: Cap. 22 – Exercícios: Nível #10 – 101m
Exercício: Qual combinação de técnicas pode ser usada para fazer um código em Go funcionar neste exercício?
Aula em vídeo: Cap. 22 – Exercícios: Nível #10 – 200m
Aula em vídeo: Cap. 22 – Exercícios: Nível #10 – 302m
Aula em vídeo: Cap. 22 – Exercícios: Nível #10 – 405m
Aula em vídeo: Cap. 22 – Exercícios: Nível #10 – 501m
Aula em vídeo: Cap. 22 – Exercícios: Nível #10 – 603m
Aula em vídeo: Cap. 22 – Exercícios: Nível #10 – 704m
Exercício: Em Go, ao criar 10 goroutines e cada uma enviar 10 números para o mesmo canal, quantos valores no total devem ser recebidos do canal para consumir tudo?
Aula em vídeo: Cap. 23 – Tratamento de Erros – 1. Entendendo erros08m
Aula em vídeo: Cap. 23 – Tratamento de Erros – 2. Verificando erros10m
Aula em vídeo: Cap. 23 – Tratamento de Erros – 3. Print18m
Exercício: Qual é a principal diferença entre usar log.Fatal e panic ao tratar um erro em Go?
Aula em vídeo: Cap. 23 – Tratamento de Erros – 4. Recover05m
Aula em vídeo: Cap. 23 – Tratamento de Erros – 5. Erros com informações adicionais14m
Aula em vídeo: Cap. 24 – Exercícios: Nível #11 – 102m
Exercício: Em Go, ao chamar uma função como fmt.Scan que retorna um erro, qual é a forma apropriada de lidar com esse erro?
Aula em vídeo: Cap. 24 – Exercícios: Nível #11 – 203m
Aula em vídeo: Cap. 24 – Exercícios: Nível #11 – 312m
Aula em vídeo: Cap. 24 – Exercícios: Nível #11 – 404m
Exercício: Em Go, ao criar uma função que retorna (int, error), o que deve ser retornado quando ocorre um erro?
Aula em vídeo: Cap. 24 – Exercícios: Nível #11 – 503m
Aula em vídeo: Cap. 25 – Documentação – 1. Introdução02m
Aula em vídeo: Cap. 25 – Documentação – 2. go doc04m
Exercício: Qual é a finalidade principal do comando go doc na linguagem Go?
Aula em vídeo: Cap. 25 – Documentação – 3. godoc03m
Aula em vídeo: Cap. 25 – Documentação – 4. godoc.org08m
Exercício: Ao documentar um pacote, tipo, constante ou função em Go para o godoc, qual prática é essencial para que o comentário seja reconhecido como documentação?
Aula em vídeo: Cap. 26 – Exercícios: Nível #12 – 107m
Aula em vídeo: Cap. 26 – Exercícios: Nível #12 – 203m
Aula em vídeo: Cap. 26 – Exercícios: Nível #12 – 302m