Welcome to the Go Programming Course! This repository contains a series of structured lessons (LECTURE-1.md to LECTURE-16.md) designed for beginners in both programming and the Go language. Each lesson includes a complete main.go file and a Markdown explanation in English and Portuguese.
Before starting the lessons, make sure your development environment is ready:
📄 Initial Setup Guide – Install Go, VS Code and Git
📄 Guia de Instalação Inicial – Instale Go, VS Code e Git
If you're enjoying this Go course and want to stay updated with future content:
👉 Follow me on LinkedIn
I regularly share free programming content, tutorials, and tech insights.
🇺🇸 EN: Introduction to a basic Go program structure — main(), printing messages, declaring variables.
🇧🇷 PT: Estrutura de um programa Go — main(), imprimir mensagens, declarar variáveis.
🇺🇸 EN: Working with float32 and float64, precision, and formatted output.
🇧🇷 PT: Trabalhando com float32 e float64, precisão e saída formatada.
🇺🇸 EN: Using the strings package to manipulate and analyze text.
🇧🇷 PT: Usando o pacote strings para manipular e analisar textos.
🇺🇸 EN: Explanation and examples of integer types, floats, and complex numbers.
🇧🇷 PT: Tipos numéricos: inteiros, ponto flutuante e números complexos.
🇺🇸 EN: Conditional statements using if, else if, else, and switch.
🇧🇷 PT: Condicionais com if, else if, else e switch.
🇺🇸 EN: Using for, for-range, and nested loops to repeat actions.
🇧🇷 PT: Uso de for, for-range e laços aninhados para repetir ações.
🇺🇸 EN: Capturing user input via Scan, bufio.Reader, and command-line arguments.
🇧🇷 PT: Captura de entrada com Scan, bufio.Reader e argumentos de linha de comando.
🇺🇸 EN: Declaring arrays and slices, looping, appending, searching, and manipulating collections.
🇧🇷 PT: Declarando arrays e slices, laços, adicionar, buscar e manipular coleções.
🇺🇸 EN: Using arithmetic, comparison, logical, assignment, and precedence operators.
🇧🇷 PT: Uso de operadores aritméticos, de comparação, lógicos, de atribuição e precedência.
🇺🇸 EN: Create, access, update, and delete key-value pairs with Go maps. Includes counting, grouping, and struct values.
🇧🇷 PT: Criação, acesso, atualização e remoção de pares chave-valor com mapas. Inclui contagem, agrupamento e structs.
🇺🇸 EN: Create reusable functions with single or multiple returns, and understand variable scope.
🇧🇷 PT: Criação de funções reutilizáveis com um ou múltiplos retornos e escopo de variáveis.
🇺🇸 EN: Explore recursion, variadic functions, closures, anonymous functions, and passing functions as parameters.
🇧🇷 PT: Explora recursão, funções variádicas, closures, funções anônimas e passagem de funções como parâmetros.
🇺🇸 EN: Learn how to use * and & in Go to pass data by reference, access memory addresses, and modify values directly. Includes pointer manipulation with variables, slices, and structs.
🇧🇷 PT: Aprenda a usar * e & em Go para passar dados por referência, acessar endereços de memória e modificar valores diretamente. Inclui ponteiros com variáveis, slices e structs.
🇺🇸 EN: Learn to declare and use structs to group related fields together. Includes composition, nesting, and operations on struct collections.
🇧🇷 PT: Aprenda a declarar e usar structs para agrupar campos relacionados. Inclui composição, aninhamento e operações com coleções de structs.
🇺🇸 EN: Create methods attached to structs to define behavior. Includes pointer receivers and business logic examples.
🇧🇷 PT: Crie métodos associados a structs para definir comportamentos. Inclui receivers com ponteiros e exemplos de lógica de negócio.
🇺🇸 EN: Learn the 4 pillars of Object-Oriented Programming (Abstraction, Encapsulation, Inheritance via Composition, and Polymorphism) using Go. Includes real-world struct modeling, interface usage, and method organization.
🇧🇷 PT: Aprenda os 4 pilares da Programação Orientada a Objetos (Abstração, Encapsulamento, Herança via Composição e Polimorfismo) com Go. Inclui modelagem de structs reais, uso de interfaces e organização de métodos.
🇺🇸 EN: Learn how to use the error type to safely return and handle errors in Go. This lesson refactors functions from previous lectures to apply proper error checking and idiomatic handling.
🇧🇷 PT: Aprenda a usar o tipo error para retornar e tratar erros com segurança em Go. Esta aula refatora funções das aulas anteriores para aplicar tratamento de erros idiomático.
🇺🇸 EN: Learn to work with files and directories using os, io, and filepath. Includes file creation, writing, reading, and directory traversal with practical examples using maps, slices, and POO.
🇧🇷 PT: Aprenda a trabalhar com arquivos e diretórios usando os, io e filepath. Inclui criação, escrita, leitura e navegação em diretórios com exemplos práticos utilizando mapas, slices e POO.
🇺🇸 EN: Understand concurrency using goroutines and channels in Go. Practice launching concurrent tasks, synchronization with WaitGroups, and data communication with buffered/unbuffered channels.
🇧🇷 PT: Entenda a concorrência usando goroutines e canais em Go. Pratique a execução de tarefas concorrentes, sincronização com WaitGroups e comunicação de dados com canais bufferizados e não bufferizados.
🇺🇸 EN: Learn how to use SQLite in Go by applying Object-Oriented Programming principles. This lesson implements a full CRUD menu using database/sql with the Person struct and demonstrates persistent storage in go_database.db.
🇧🇷 PT: Aprenda como usar SQLite em Go aplicando os princípios de Programação Orientada a Objetos. Esta aula implementa um menu completo de CRUD usando database/sql com a struct Person e demonstra persistência de dados em go_database.db.
Happy coding! 🎉 | Bons estudos! 📘
