Aprenda Go (Golang)
Um curso de Go online, grátis e interativo. Você escreve Go em toda lição, com dicas de IA quando a concorrência fica estranha e um certificado grátis ao concluir.
22,067+ codders inscritos
- Ideal para iniciantes
Ajuda de codificação com IA
Lições interativas e práticas
Narração em áudio em todas as lições
Questionários para testar seu conhecimento
Certificado grátis de conclusão
Programa
Seção 1
Fundamentos
Começar seçãoIniciarExpandirRecolherConstrua uma base sólida com conceitos essenciais e habilidades básicasIntrodução ao Go
4 lições423- 01O que é Go?Desafio
- 02Hello WorldDesafioQuizÁudio
- 03PrintlnDesafioQuizÁudio
- 04Comentários em GoDesafioQuizÁudio
Variáveis e Tipos de Dados Básicos
10 lições1069- 01O que é uma variávelDesafioQuizÁudio
- 02Inferência de Tipo com `:=`DesafioQuizÁudio
- 03Inteiros (int)DesafioQuizÁudio
- 04Números de Ponto FlutuanteDesafioQuizÁudio
- 05BooleanosDesafioQuizÁudio
- 06StringsDesafioQuizÁudio
- 07Valores ZeroDesafioQuizÁudio
- 08ConstantesDesafioQuizÁudio
- 09Convenções de NomenclaturaDesafioQuizÁudio
- 10Recapitulação - Variáveis e TiposDesafio
Operadores Básicos
7 lições744- 01Operadores AritméticosDesafioQuizÁudio
- 02Operador de DivisãoDesafioQuizÁudio
- 03O Operador MóduloDesafioQuizÁudio
- 04Operador de AtribuiçãoDesafioQuizÁudio
- 05Operadores de Atribuição CompostaDesafioQuizÁudio
- 06Incremento e DecrementoDesafioQuizÁudio
- 07Recapitulação - CálculosDesafio
Operadores de Comparação e Lógicos
7 lições742- 01Operadores de Comparação - Parte 1DesafioQuizÁudio
- 02Operadores de Comparação - Parte 2DesafioQuizÁudio
- 03Operador Lógico ANDDesafioQuizÁudio
- 04Operador Lógico ORDesafioQuizÁudio
- 05Operador Lógico NOTDesafioQuizÁudio
- 06Fundamentos de Precedência de OperadoresDesafioQuizÁudio
- 07Recapitulação - Fazendo ComparaçõesDesafio
Entrada/Saída Básica
5 lições532- 01Saída FormatadaDesafioQuizÁudio
- 02Verbos de FormataçãoDesafioQuizÁudio
- 03Imprimindo TiposDesafioQuizÁudio
- 04Obtendo Entrada Básica do UsuárioDesafioQuizÁudio
- 05Recapitulação - Entrada e SaídaDesafio
Fluxo de Controle: Condicionais
10 lições1069- 01A Instrução `if`DesafioQuizÁudio
- 02A Palavra-chave `else`DesafioQuizÁudio
- 03A Palavra-chave `else if`DesafioQuizÁudio
- 04Sombreamento de Variáveis no `if`DesafioQuizÁudio
- 05Inicializando VariáveisDesafioQuizÁudio
- 06A Instrução `switch`DesafioQuizÁudio
- 07Switch com ExpressõesDesafioQuizÁudio
- 08Switch sem ExpressãoDesafioQuizÁudio
- 09A Palavra-chave `fallthrough`DesafioQuizÁudio
- 10Recapitulação - Tomando DecisõesDesafio
Fluxo de Controle: Loops
7 lições743- 01O Loop `for` ExplicadoDesafioQuizÁudio
- 02Loop For - BásicoDesafioQuizÁudio
- 03Loop For - Apenas CondiçãoDesafioQuizÁudio
- 04A Palavra-chave `break`DesafioQuizÁudio
- 05A Palavra-chave `continue`DesafioQuizÁudio
- 06Loops AninhadosDesafioQuizÁudio
- 07Recapitulação - Repetindo AçõesDesafio
Funções
9 lições962- 01Entendendo FunçõesDesafioQuizÁudio
- 02Declarando uma FunçãoDesafioQuizÁudio
- 03Chamando FunçõesDesafioQuizÁudio
- 04Parâmetros de FunçãoDesafioQuizÁudio
- 05Retornando um Único ValorDesafioQuizÁudio
- 06Retornando Múltiplos ValoresDesafioQuizÁudio
- 07Valores de Retorno NomeadosDesafioQuizÁudio
- 08Fundamentos de Escopo de FunçãoDesafioQuizÁudio
- 09Recapitulação - Criando Código ReutilizávelDesafio
Ponteiros
7 lições644- 01O que é um Ponteiro?QuizÁudio
- 02Declarando Variáveis de PonteiroDesafioQuizÁudio
- 03O Operador de EndereçoDesafioQuizÁudio
- 04Desreferenciando PonteirosDesafioQuizÁudio
- 05Usando Ponteiros em FunçõesDesafioQuizÁudio
- 06Ponteiros NilDesafioQuizÁudio
- 07Recapitulação - Entendendo PonteirosDesafio
Tipos Compostos: Arrays
7 lições650- 01Introdução a ArraysQuizÁudio
- 02Declarando ArraysDesafioQuizÁudio
- 03Inicializando ArraysDesafioQuizÁudio
- 04Acessando Elementos de um ArrayDesafioQuizÁudio
- 05Tamanho do Array com `len`DesafioQuizÁudio
- 06Iterando sobre ArraysDesafioQuizÁudio
- 07Arrays MultidimensionaisDesafioQuizÁudio
Tipos Compostos: Slices
10 lições965- 01Introdução aos SlicesQuizÁudio
- 02Declarando Literais de SliceDesafioQuizÁudio
- 03Criando Slices com `make`DesafioQuizÁudio
- 04Comprimento vs Capacidade de SlicesDesafioQuizÁudio
- 05Acessando Elementos de SlicesDesafioQuizÁudio
- 06Adicionando ElementosDesafioQuizÁudio
- 07Fatiando Slices/Arrays ExistentesDesafioQuizÁudio
- 08Iterando sobre SlicesDesafioQuizÁudio
- 09Copiando SlicesDesafioQuizÁudio
- 10Recapitulação - Listas DinâmicasDesafio
Tipos Compostos: Mapas
10 lições965- 01Introdução a MapasQuizÁudio
- 02Declarando Literais de MapasDesafioQuizÁudio
- 03Criando Mapas com `make`DesafioQuizÁudio
- 04Adicionando e Atualizando Chave-ValorDesafioQuizÁudio
- 05Acessando Valores de MapasDesafioQuizÁudio
- 06Verificando a Existência de ChavesDesafioQuizÁudio
- 07Deletando Entradas de MapasDesafioQuizÁudio
- 08Tamanho do MapaDesafioQuizÁudio
- 09Iterando sobre MapasDesafioQuizÁudio
- 10Recapitulação - Armazenamento Chave-ValorDesafio
Tipos Compostos: Structs
8 lições854- 01Definindo Tipos PersonalizadosDesafioQuizÁudio
- 02Criando Instâncias de StructsDesafioQuizÁudio
- 03Acessando Campos de StructsDesafioQuizÁudio
- 04Ponteiros para StructsDesafioQuizÁudio
- 05Inicializando StructsDesafioQuizÁudio
- 06Structs IncorporadasDesafioQuizÁudio
- 07Structs AnônimasDesafioQuizÁudio
- 08Recapitulação - Estruturas de Dados PersonalizadasDesafio
Tratamento de Erros Básico
8 lições858- 01O Conceito de ErrosDesafioQuizÁudio
- 02A Interface `error`DesafioQuizÁudio
- 03Funções que Retornam ErrosDesafioQuizÁudio
- 04Verificando ErrosDesafioQuizÁudio
- 05Criando Erros SimplesDesafioQuizÁudio
- 06Criando Erros FormatadosDesafioQuizÁudio
- 07Tratamento de Erros BásicoDesafioQuizÁudio
- 08Recapitulação - Lidando com ProblemasDesafio
Seção 2
Lógica & Fluxo
Começar seçãoIniciarExpandirRecolherDomine a programação avançada em Go com foco em estruturas de dados e controle de fluxo. Aprenda a trabalhar com arrays complexos, coleções, tratamento de erros e gerenciamento de tempo.Fluxo de Controle Avançado
5 lições528- 01Switch com `fallthrough`DesafioQuiz
- 02Interrompendo Loops AninhadosDesafioQuiz
- 03Continuando um Loop EspecíficoDesafioQuiz
- 04A Instrução `goto`DesafioQuiz
- 05Recapitulação - Controle de Loop AvançadoDesafio
Structs e Métodos
6 lições439- 01Definindo Métodos em StructsDesafioQuiz
- 02Recebedores de ValorDesafioQuiz
- 03Recebedores de PonteiroDesafioQuiz
- 04Escolhendo RecebedoresQuiz
- 05Métodos vs FunçõesQuiz
- 06Recapitulação - Comportamento de StructsDesafio
Interfaces (O Básico)
8 lições757- 01O que é uma Interface?Quiz
- 02Definindo uma InterfaceDesafioQuiz
- 03Implementando uma InterfaceDesafioQuiz
- 04Usando Tipos de InterfaceDesafioQuiz
- 05Interface VaziaDesafioQuiz
- 06Asserções de TipoDesafioQuiz
- 07Type SwitchDesafioQuiz
- 08Recapitulação - Formas e ComportamentosDesafio
Projeto: Lista de Tarefas Simples
Projeto6 lições1- 01Configuração do ProjetoDesafio
- 02Adicionando uma TarefaProjeto
- 03Visualizando Todas as TarefasProjeto
- 04Concluindo uma TarefaProjeto
- 05Removendo uma TarefaProjeto
- 06Juntando TudoProjeto
Mapas em Profundidade
5 lições432- 01Mapas de StructsDesafioQuiz
- 02Ponteiros como Valores de MapDesafioQuiz
- 03Verificando Mapas NilDesafioQuiz
- 04Comparando MapasQuiz
- 05Recapitulação - Contador de Frequência de PalavrasDesafio
Go Idiomático: Conjuntos
7 lições648- 01O Idioma de Conjuntos em GoQuiz
- 02Criando um ConjuntoDesafioQuiz
- 03Adicionando a um ConjuntoDesafioQuiz
- 04Verificando a Existência de ElementosDesafioQuiz
- 05Removendo de um ConjuntoDesafioQuiz
- 06Iterando sobre um ConjuntoDesafioQuiz
- 07Recapitulação - Nomes de Usuário ÚnicosDesafio
Tratamento de Erros em Profundidade
7 lições650- 01Tipos de Erro PersonalizadosDesafioQuiz
- 02Wrapping de Erros com `%w`DesafioQuiz
- 03Unwrapping com `errors.Is`DesafioQuiz
- 04Unwrapping com `errors.As`DesafioQuiz
- 05Entendendo o `panic`Quiz
- 06Usando o `recover`DesafioQuiz
- 07Recapitulação - Divisão SeguraDesafio
Projeto: Inventário Simples
Projeto6 lições1- 01Visão Geral do ProjetoDesafio
- 02Verificando o EstoqueProjeto
- 03Adicionando um Novo ItemProjeto
- 04Atualizando a Quantidade em EstoqueProjeto
- 05Gerando um RelatórioProjeto
- 06Juntando TudoProjeto
Pacotes e Escopo
7 lições550- 01O que é um Pacote?Quiz
- 02Exportado vs Não ExportadoDesafioQuiz
- 03Criando um Pacote SimplesDesafioQuiz
- 04Aliasing de PacotesDesafioQuiz
- 05O Identificador em Branco `_` Quiz
- 06A função `init`DesafioQuiz
- 07Recapitulação - Construindo um UtilitárioDesafio
Trabalhando com Tempo
8 lições857- 01Obtendo o Horário AtualDesafioQuiz
- 02Criando um Horário EspecíficoDesafioQuiz
- 03Formatando o TempoDesafioQuiz
- 04Parsing de Strings de TempoDesafioQuiz
- 05Duração de TempoDesafioQuiz
- 06Aritmética de TempoDesafioQuiz
- 07Sleep e TickersDesafioQuiz
- 08Recapitulação - Timer SimplesDesafio
Desafios Finais
3 lições3- 01Lista de Contatos BásicaDesafio
- 02Validador de Números SimplesDesafio
- 03Coletor de Itens ÚnicosDesafio
Seção 3
Programação Orientada a Objetos
Começar seçãoIniciarExpandirRecolherDescubra como organizar o código com classes, objetos e estruturas reutilizáveisFundamentos de OOP em Go
11 lições1189- 01Arquivos ExternosDesafioQuiz
- 02Go Workspace e MódulosDesafioQuiz
- 03Pacotes e ImportaçõesDesafioQuiz
- 04Nomes Exportados vs Não ExportadosDesafioQuiz
- 05Introdução a OOP em GoDesafioQuiz
- 06Structs como ClassesDesafioQuiz
- 07Definindo Métodos em StructsDesafioQuiz
- 08Recebedores de Ponteiro vs ValorDesafioQuiz
- 09Inicialização de StructsDesafioQuiz
- 10Funções ConstrutorasDesafioQuiz
- 11Recapitulação - Calculadora SimplesDesafio
Mergulho Profundo em Tipos e Structs
7 lições752- 01Tipos Básicos e CompostosDesafioQuiz
- 02Definições de Tipos PersonalizadosDesafioQuiz
- 03Struct TagsDesafioQuiz
- 04Structs AnônimasDesafioQuiz
- 05Structs AninhadasDesafioQuiz
- 06Zero Values e PadrõesDesafioQuiz
- 07Recapitulação - Agenda de ContatosDesafio
Ponteiros e Memória
6 lições644- 01Fundamentos de Ponteiros em GoDesafioQuiz
- 02Ponteiros para StructsDesafioQuiz
- 03Passagem por Valor vs ReferênciaDesafioQuiz
- 04A Função new()DesafioQuiz
- 05Garbage Collection em GoDesafioQuiz
- 06Recapitulação - Construtor de Lista EncadeadaDesafio
Interfaces
9 lições969- 01Introdução a InterfacesDesafioQuiz
- 02Implementação ImplícitaDesafioQuiz
- 03Interface como ContratoDesafioQuiz
- 04Interface Vazia (any)DesafioQuiz
- 05Type AssertionDesafioQuiz
- 06Type SwitchDesafioQuiz
- 07Composição de InterfacesDesafioQuiz
- 08Interfaces Stringer & ErrorDesafioQuiz
- 09Recapitulação - Calculadora de FormasDesafio
Composição em vez de Herança
7 lições749- 01Por que Go não possui HerançaDesafioQuiz
- 02Fundamentos de Incorporação de StructsDesafioQuiz
- 03Promoção de MétodosDesafioQuiz
- 04Incorporando Múltiplas StructsDesafioQuiz
- 05Incorporação vs AgregaçãoDesafioQuiz
- 06Shadowing de Métodos IncorporadosDesafioQuiz
- 07Recapitulação - Hierarquia de FuncionáriosDesafio
Polimorfismo em Go
6 lições643- 01Polimorfismo via InterfacesDesafioQuiz
- 02Duck Typing em GoDesafioQuiz
- 03Regras de Satisfação de InterfaceDesafioQuiz
- 04Coleções PolimórficasDesafioQuiz
- 05Injeção de DependênciaDesafioQuiz
- 06Recapitulação - Processador de PagamentosDesafio
Encapsulamento
5 lições536- 01Campos Exportados vs Não ExportadosDesafioQuiz
- 02Encapsulamento em Nível de PacoteDesafioQuiz
- 03Métodos Getter e SetterDesafioQuiz
- 04Ocultação de Informação em GoDesafioQuiz
- 05Recapitulação - Registros de EstudantesDesafio
Tratamento de Erros e OOP
7 lições754- 01A Interface errorDesafioQuiz
- 02Tipos de Erro PersonalizadosDesafioQuiz
- 03Error Wrapping (fmt.Errorf)DesafioQuiz
- 04Erros SentinelaDesafioQuiz
- 05errors.Is() e errors.As()DesafioQuiz
- 06Panic, Defer e RecoverDesafioQuiz
- 07Recapitulação - File ParserDesafio
Concorrência e OOP
8 lições863- 01Fundamentos de GoroutinesDesafioQuiz
- 02Canais e ComunicaçãoDesafioQuiz
- 03Canais com Buffer vs. Sem BufferDesafioQuiz
- 04Instrução SelectDesafioQuiz
- 05sync.Mutex e sync.RWMutexDesafioQuiz
- 06sync.WaitGroupDesafioQuiz
- 07Design de Structs Thread-SafeDesafioQuiz
- 08Recapitulação - Worker PoolDesafio
Generics (Go 1.18+)
6 lições645- 01Introdução a GenericsDesafioQuiz
- 02Parâmetros de TipoDesafioQuiz
- 03Restrições de TipoDesafioQuiz
- 04Structs GenéricasDesafioQuiz
- 05Solução Alternativa para Métodos GenéricosDesafioQuiz
- 06Recapitulação - Coleção GenéricaDesafio
Biblioteca Padrão & POO
6 lições644- 01io.Reader & io.WriterDesafioQuiz
- 02sort.InterfaceDesafioQuiz
- 03Interface fmt.StringerDesafioQuiz
- 04encoding/json com StructsDesafioQuiz
- 05Interface http.HandlerDesafioQuiz
- 06Recapitulação - Modelos de API RESTDesafio
Conceitos Avançados de OOP
6 lições655- 01Padrão Functional OptionsDesafioQuiz
- 02Padrão Builder em GoDesafioQuiz
- 03Encadeamento de MétodosDesafioQuiz
- 04Type Aliases vs DefiniçõesDesafioQuiz
- 05Fundamentos de ReflectionDesafioQuiz
- 06Visão Geral de Geração de CódigoDesafioQuiz
Padrões de Projeto Parte 1
6 lições651- 01Introdução aos Padrões de ProjetoDesafioQuiz
- 02Padrão SingletonDesafioQuiz
- 03Padrão FactoryDesafioQuiz
- 04Padrão Abstract FactoryDesafioQuiz
- 05Padrão ObserverDesafioQuiz
- 06Padrão StrategyDesafioQuiz
Padrões de Projeto Parte 2
7 lições764- 01Padrão CommandDesafioQuiz
- 02Padrão AdapterDesafioQuiz
- 03Padrão DecoratorDesafioQuiz
- 04Padrão Template MethodDesafioQuiz
- 05Padrão StateDesafioQuiz
- 06Padrão CompositeDesafioQuiz
- 07Middleware como DecoratorDesafioQuiz
Projeto: Gerenciamento de Biblioteca
Projeto7 lições1- 01Visão Geral e Estrutura do ProjetoDesafio
- 02Structs de Livro e UsuárioProjeto
- 03Sistema de EmpréstimosProjeto
- 04Busca com InterfacesProjeto
- 05Camada de Persistência JSONProjeto
- 06Interface CLI de AdministradorProjeto
- 07Testes e IntegraçãoProjeto
Desafios Finais
3 lições3- 01Plataforma de E-LearningDesafio
- 02Sistema BancárioDesafio
- 03Sistema de Personagens de JogoDesafio
Cursos de GO
Cursos práticos de GO, grátis para começar no navegador.
Desafios para Iniciantes - Pratique Conceitos Básicos
PopularColoque seus conhecimentos básicos de programação à prova e tente resolver estes desafios de programação. Use a linguagem que desejar. Bons códigos!
Certificado ao concluir
- 20
- 20
Problemas de Programação
PopularColoque suas habilidades de resolução de problemas de programação à prova com os exercícios de diferentes níveis de dificuldade deste curso. Projetado para programadores com algum conhecimento prévio da sintaxe básica em qualquer linguagem de programação.
Certificado ao concluir
- 32
- 31
Desafios de Programação: Volume 2
Coloque suas habilidades de resolução de problemas de programação à prova com os exercícios de diferentes níveis de dificuldade deste curso. Projetado para programadores com conhecimento prévio da sintaxe básica em qualquer linguagem de programação, este curso é uma extensão do primeiro Desafios de Programação.
Certificado ao concluir
- 25
- 24
Pilha - Série Estruturas de Dados #1
Neste curso, você aprenderá sobre a estrutura de dados Pilha, criará uma Pilha do zero usando sua linguagem preferida e praticará desafios de programação com ela!
- 13
- 6
- 1
Heaps e Filas de Prioridade - Série de Estruturas de Dados #7
NovoNeste curso, você aprenderá sobre a estrutura de dados Heap (a base das filas de prioridade), criará um MinHeap do zero usando sua linguagem preferida e praticará desafios de codificação com ela!
Certificado ao concluir
- 14
- 6
- 1
Bootcamp de Padrões de Estrelas
Coloque suas habilidades de resolução de problemas de programação em prática para aprender a imprimir padrões de estrelas que variam do simples ao complexo, envolvendo diferentes níveis de loops aninhados, estruturas condicionais e cálculos matemáticos.
- 30
- 28
Por que aprender Go (Golang) com a Coddy
- Escreva e execute código Go de verdade no navegador. Sem instalar a toolchain do Go, sem configurar GOPATH. Cada aula compila seu programa Go no servidor e mostra a saída na hora.
- Go idiomático: packages, structs, slices e maps, interfaces, tratamento de erros, goroutines, channels. Os padrões de Go que você usaria de verdade para construir backends e CLIs.
- As dicas de IA ajudam você a debugar o código Go e desenrolar bugs de goroutines e channels sem entregar a resposta, para o modelo de concorrência fazer sentido em vez de te confundir.
- Certificado de Golang grátis ao concluir. Um sinal confiável para vagas de backend, infraestrutura em nuvem e DevOps, onde fluência em Go é cada vez mais esperada.