Voltar aos Cursos
AI017 Professional

Comece a Programar com Go

Uma introdução prática e amigável à linguagem de programação Go. O curso é estruturado em lições pequenas e gerenciáveis com tema de exploração espacial, abordando programação imperativa, tipos, funções, métodos, coleções, estado e concorrência.

4.9
24.0h
749 estudantes
0 curtidas
Inteligência Artificial
Começar a Aprender

Visão Geral do Curso

📚 Resumo do Conteúdo

Uma introdução prática e acessível à linguagem de programação Go. O curso é estruturado em lições pequenas e gerenciáveis com tema de exploração espacial, abordando programação imperativa, tipos, funções, métodos, coleções, estado e concorrência.

Descubra o prazer de programar com Go por meio de pequenas lições e sete projetos-principais de navegação espacial.

Autor: Nathan Youngman, Roger Peppé

Agradecimentos: Jennifer Stout, Marina Michaels, Matthew Merkes, Joel Kotarski, Aleksandar Dragosavljević, Renée French, Olga Shalakhina, Erick Zelaya, April Milne, Monica Kamsvaag.

🎯 Objetivos de Aprendizagem

  1. Definir a linguagem de programação Go e seus principais casos de uso.
  2. Explicar a função do compilador Go e suas vantagens em relação aos interpretadores.
  3. Navegar pelo Go Playground para escrever, compilar e executar código.
  4. Estruturar corretamente o código Go usando o estilo obrigatório "uma verdadeira chave", evitando erros de sintaxe.
  5. Gerenciar dados usando diversas técnicas de declaração de variáveis e operadores de atribuição aritmética.
  6. Gerar números pseudorandom e implementar lógica condicional usando ramificações e operadores lógicos.
  7. Declarar e formatar variáveis de ponto flutuante usando float32 e float64 com largura e precisão específicas.
  8. Identificar e mitigar erros causados por imprecisões de ponto flutuante e estouro de inteiros.
  9. Utilizar o pacote big e constantes não tipadas para lidar com números que ultrapassam os limites padrão de bits.
  10. Definir e invocar funções usando parâmetros, argumentos e sintaxe variádica.

🔹 Lição 1: Lançando-se em Órbita

Visão Geral: Esta lição apresenta o Go, a linguagem de programação contemporânea da computação em nuvem. Os alunos aprenderão a diferença fundamental entre a natureza compilada do Go e as linguagens interpretadas, como usar o Go Playground para experimentação imediata e a estrutura básica de um programa Go envolvendo pacotes e a função main.

Resultados de Aprendizagem:

  • Definir a linguagem de programação Go e seus principais casos de uso.
  • Explicar a função do compilador Go e suas vantagens em relação aos interpretadores.
  • Navegar pelo Go Playground para escrever, compilar e executar código.

🔹 Lição 2: Lógica do Centro de Missão

Visão Geral: Esta lição apresenta os blocos fundamentais da programação em Go, focando na estruturação do código e no controle de sua execução. Os alunos aprenderão o estilo "uma verdadeira chave", pontos de entrada de programas, progressarão por atalhos de declaração de variáveis e operadores matemáticos, e terminarão com lógica de decisão usando booleanos, comparações e ramificações.

Resultados de Aprendizagem:

  • Estruturar corretamente o código Go usando o estilo obrigatório "uma verdadeira chave" para evitar erros de sintaxe.
  • Gerenciar dados usando diversas técnicas de declaração de variáveis e operadores de atribuição aritmética.
  • Gerar números pseudorandom e implementar lógica condicional usando ramificações e operadores lógicos.

🔹 Lição 3: A Física dos Dados Espaciais

Visão Geral: Esta lição explora como o Go lida com dados numéricos, desde a precisão fracionária de números de ponto flutuante até as escalas massivas necessárias para distâncias astronômicas. Os alunos aprenderão a gerenciar as limitações da memória do computador, incluindo imprecisões de ponto flutuante e estouros de inteiros, enquanto dominam conversões explícitas de tipo e o uso do pacote big para tamanhos numéricos "inesperados".

Resultados de Aprendizagem:

  • Declarar e formatar variáveis de ponto flutuante usando float32 e float64 com largura e precisão específicas.
  • Identificar e mitigar erros causados por imprecisões de ponto flutuante e estouro de inteiros.
  • Utilizar o pacote big e constantes não tipadas para lidar com números que ultrapassam os limites padrão de bits.

🔹 Lição 4: Construindo Módulos Modulares

Visão Geral: Esta lição cobre os blocos fundamentais dos programas Go: funções, tipos personalizados e métodos. Os alunos aprenderão como encapsular lógica para reutilização, definir novos tipos com comportamentos específicos e aproveitar funções de primeira classe — incluindo fechamentos (closures) e funções anônimas — para criar código flexível e modular. A lição termina com um projeto-principal prático envolvendo tabelas de conversão de temperatura.

Resultados de Aprendizagem:

  • Definir e invocar funções usando parâmetros, argumentos e sintaxe variádica.
  • Distinguir identificadores exportados e não exportados usando as convenções de nomeação do Go.
  • Criar tipos personalizados e associar comportamentos a eles usando métodos e receptores.

🔹 Lição 5: Abastecendo a Carga Útil

Visão Geral: Esta lição aborda as estruturas de dados essenciais em Go para gerenciar coleções de informações. Ela passa de arrays de comprimento fixo e seu comportamento de cópia em memória para slices dinâmicos que servem como janelas flexíveis sobre os dados, e finalmente para mapas para pesquisas eficientes por chave-valor. A unidade culmina no projeto-principal "Jogo da Vida", que demonstra como usar slices multidimensionais para simular sistemas complexos.

Resultados de Aprendizagem:

  • Declarar, inicializar e iterar sobre arrays de comprimento fixo e grades multidimensionais.
  • Manipular slices usando intervalos de índice e crescimento dinâmico por meio da função append.
  • Gerenciar eficiência de memória diferenciando entre comprimento e capacidade e pré-alocando coleções com make.

🔹 Lição 6: Estruturando Habitats Marcianos

Visão Geral: Esta lição apresenta a abordagem do Go para organizar dados e comportamentos complexos. Os alunos aprenderão a agrupar tipos de dados diversos em estruturas (structs), inicializá-las usando literais compostos e gerenciar seu comportamento por meio de métodos e funções construtoras. A lição também explora a filosofia de design única do Go: favorecer composição em vez de herança e usar interfaces implícitas para alcançar polimorfismo.

Resultados de Aprendizagem:

  • Definir, inicializar e copiar estruturas para gerenciar dados complexos de coordenadas marcianas e rovers.
  • Codificar estruturas Go em formato JSON usando tags de struct para troca de dados personalizada.
  • Implementar métodos, funções construtoras e embutimento de structs para criar código reutilizável e organizado.

🔹 Lição 7: Navegando pelo Buraco do Gopher

Visão Geral: Esta lição explora o poder e a segurança da indireção em Go, focando em como ponteiros permitem mutação eficiente de dados e gerenciamento de memória. Oferece um quadro robusto para programação defensiva ao ensinar os alunos a lidar com valores nil, gerenciar recursos com defer e implementar padrões idiomáticos de tratamento de erros — culminando na aplicação dessas regras a um motor de validação de Sudoku.

Resultados de Aprendizagem:

  • Usar o caractere & e o asterisco * para gerenciar endereços de memória e desreferenciar valores.
  • Implementar parâmetros e receptores de ponteiro para habilitar a mutação de dados em funções e métodos.
  • Navegar valores nil em slices, maps e interfaces sem causar panics em tempo de execução.

🔹 Lição 8: Comunicações Multirôver

Visão Geral: Esta lição apresenta as primitivas centrais de concorrência em Go: goroutines e canais. Explora como executar tarefas independentemente, comunicar-se de forma segura entre elas e gerenciar estado compartilhado usando Mutexes para evitar condições de corrida. A lição termina com um projeto-principal que simula rovers marcianos navegando em uma grade e relatando descobertas.

Resultados de Aprendizagem:

  • Lançar e gerenciar tarefas concorrentes usando a palavra-chave go.
  • Implementar comunicação segura entre goroutines usando canais e a instrução select.
  • Construir pipelines de dados e gerenciar ciclos de vida de goroutines fechando canais.