Pular para o conteúdo principal

Linguagem de Programação Go

Aprenda Go do zero. Esta série cobre a linguagem completa: de tipos básicos e controle de fluxo até funções, interfaces, tratamento de errors, goroutines e gerenciamento de modules.

Uma linguagem feita para clareza

Go foi projetada no Google para resolver problemas reais de engenharia: builds lentos, código difícil de ler e suporte ruim a concorrência. O resultado é uma linguagem estaticamente tipada, compilada e com garbage collector — mas que parece tão produtiva quanto uma linguagem dinâmica.

Por que Go

  • Sintaxe simples: Poucas palavras-chave e regras consistentes significam menos tempo lendo documentação
  • Compilação rápida: Builds em segundos, mesmo em projetos grandes
  • Concorrência nativa: Goroutines e channels são cidadãos de primeira classe
  • Biblioteca padrão completa: A maioria do que você precisa já está incluída
  • Legível por padrão: O código é fácil de acompanhar mesmo para quem está chegando agora

O que você vai aprender

Cada artigo nesta categoria cobre um conceito fundamental de Go:

  • Os tipos nativos que Go oferece e como a memória funciona por trás deles
  • Variáveis, constantes e como Go lida com declarações
  • Identificadores, keywords e regras de nomenclatura
  • Operadores: aritmética, comparação, lógica e bitwise
  • Strings: encoding, manipulação e Unicode
  • Controle de fluxo: condicionais, loops, switch, break, continue, labels e goto
  • Tipos compostos: arrays, slices, maps e structs
  • Funções, múltiplos valores de retorno, parâmetros variádicos e closures
  • Defer e como ele interage com panic e recover
  • Pointers e o modelo call-by-value do Go
  • Methods, custom types e struct embedding
  • Interfaces: structural typing, empty interface, type assertions e type switches
  • Errors: custom error types, wrapping e errors.Is / errors.As
  • Gerenciamento de dependências com Go modules
  • Design de packages e organização de código
  • Padrões de project structure: de um único arquivo até serviços multi-binário e workspace mode
47 artigos
Linguagem de Programação Go01 / 47

Introdução ao Go

Descubra as origens do Go — por que o Google o criou, quem o projetou e os princípios que o tornam rápido, simples e feito para a era moderna do software.

7 min de leitura
Linguagem de Programação Go02 / 47

Tipos básicos

Explore os tipos nativos de Go — inteiros, floats, booleanos, strings e mais. Entenda como o sistema de tipos de Go funciona e o custo de memória de cada tipo.

7 min de leitura
Linguagem de Programação Go03 / 47

Variáveis e constantes

Aprenda como Go nomeia valores — a keyword var, short declarations e constantes. Entenda inferência de tipo, zero values e a diferença entre bindings mutáveis e imutáveis.

7 min de leitura
Linguagem de Programação Go04 / 47

Identificadores e keywords

Entenda as regras de nomenclatura de Go, as 25 keywords reservadas e os identificadores pré-declarados que vêm embutidos em todo programa Go.

7 min de leitura
Linguagem de Programação Go05 / 47

Operadores

Domine os operadores de Go — aritméticos, de comparação, lógicos, bit a bit e de atribuição. Aprenda a precedência de operadores e como Go avalia expressões.

8 min de leitura
Linguagem de Programação Go06 / 47

Strings

Mergulho profundo em strings no Go — armazenadas como sequências de bytes UTF-8, imutáveis e com suporte completo a Unicode. Aprenda indexação, slicing, conversões e como iterar corretamente.

8 min de leitura
Linguagem de Programação Go07 / 47

Condicionais

Domine os statements condicionais em Go — if, else, else if e if com init statement. Aprenda como Go impõe condições booleanas estritas e como variáveis com escopo tornam o tratamento de erros mais limpo.

4 min de leitura
Linguagem de Programação Go08 / 47

Arrays e slices

Domine os dois tipos de sequência centrais do Go — arrays de tamanho fixo e slices dinâmicos. Aprenda como slices encapsulam arrays internamente, como capacity e crescimento funcionam e como evitar as armadilhas de memória compartilhada.

9 min de leitura
Linguagem de Programação Go09 / 47

Maps

Aprenda como o tipo built-in map do Go funciona — nil map vs empty map, leitura com o comma-ok idiom, escrita, unicidade de keys e restrições de tipos comparáveis.

4 min de leitura
Linguagem de Programação Go10 / 47

Structs

Aprenda como structs no Go permitem modelar dados do mundo real agrupando campos em tipos próprios. Zero values, inicialização posicional e nomeada, e notação de ponto.

4 min de leitura
Linguagem de Programação Go11 / 47

Blocos de código e escopo

Entenda como Go organiza o código em blocos aninhados e como o escopo de variáveis flui por eles. Aprenda a hierarquia de blocos, as regras de escopo e como o shadowing funciona — e por que deve ser evitado.

5 min de leitura
Linguagem de Programação Go12 / 47

O loop for

Go tem apenas um construto de loop — for — mas cobre todos os casos de uso. Aprenda as três formas do for, como range funciona em arrays, slices, strings, maps e channels, e quando usar cada forma.

6 min de leitura
Linguagem de Programação Go13 / 47

Break, continue, labels e goto

Aprenda a controlar o fluxo de loops em Go com break e continue, como labels os estendem para loops aninhados, e onde o goto se encaixa — e quando evitá-lo.

7 min de leitura
Linguagem de Programação Go14 / 47

O statement switch

O switch do Go é mais limpo e poderoso do que na maioria das linguagens. Aprenda como ele lida com múltiplos caminhos, inicialização, cases com múltiplas condições e fallthrough.

6 min de leitura
Linguagem de Programação Go15 / 47

Funções

Funções são os blocos de construção de todo programa Go. Aprenda como declará-las, passar parâmetros, retornar valores e usar os distintos múltiplos retornos do Go.

10 min de leitura
Linguagem de Programação Go16 / 47

Closures e funções anônimas

Closures são funções que capturam variáveis do escopo que as envolve. Aprenda como funcionam em Go, por que retêm estado e onde são mais úteis.

6 min de leitura
Linguagem de Programação Go17 / 47

Defer

O statement defer agenda uma chamada de função para executar logo antes da função ao redor retornar. Aprenda como funciona, quando os argumentos são avaliados e como usá-lo para cleanup.

6 min de leitura
Linguagem de Programação Go18 / 47

Pointers

Aprenda como os pointers funcionam em Go, quando usá-los para mutabilidade e performance, e como o garbage collector gerencia a memória heap.

8 min de leitura
Linguagem de Programação Go19 / 47

Call by value e call by reference

Entenda como o Go passa argumentos para funções, por que é estritamente call by value, e como maps e slices se comportam como referências.

8 min de leitura
Linguagem de Programação Go20 / 47

Types e métodos

Aprenda a definir e derivar types em Go, associar comportamento com métodos, entender receivers e method sets, e usar iota para sequências de constantes tipadas.

12 min de leitura
Linguagem de Programação Go21 / 47

Embedding

Aprenda como Go usa embedding para compor structs, promover fields e métodos, e satisfazer interfaces — sem herança.

6 min de leitura
Linguagem de Programação Go22 / 47

Interfaces

Aprenda como interfaces em Go definem comportamento de forma implícita, como types satisfazem múltiplas interfaces, e como a empty interface e type assertions permitem código flexível e fácil de manter.

11 min de leitura
Linguagem de Programação Go23 / 47

Errors

Aprenda como Go trata errors explicitamente por meio de valores de retorno, como criar e encapsular errors, e como compará-los com errors.Is e errors.As.

9 min de leitura
Linguagem de Programação Go24 / 47

Panic and recover

Entenda quando Go lança um panic, como ele percorre a call stack, e como recover permite capturar panics e retornar errors em vez de encerrar o programa.

7 min de leitura
Linguagem de Programação Go25 / 47

Packages

Aprenda como packages organizam código em Go, como exports e a função init funcionam, como importar packages e os idiomas para naming, aliases e imports de side effect.

7 min de leitura
Linguagem de Programação Go26 / 47

Dependency management

Aprenda como Go modules gerenciam dependências com go.mod e go.sum, como adicionar e remover packages, e como manter seus arquivos de module limpos com go mod tidy.

5 min de leitura
Linguagem de Programação Go27 / 47

Project structure

Aprenda como estruturar projetos Go desde uma biblioteca de arquivo único até aplicações multi-package com internal packages, múltiplos executáveis e workspace mode.

9 min de leitura
Linguagem de Programação Go28 / 47

io.Reader e io.Writer

Aprenda como as interfaces io.Reader e io.Writer do Go unificam I/O entre arquivos, HTTP, buffers e muito mais — e como implementá-las você mesmo.

8 min de leitura
Linguagem de Programação Go29 / 47

os e bufio

Aprenda a ler e escrever arquivos, processar texto linha a linha, gerenciar variáveis de ambiente e acessar argumentos de linha de comando com os pacotes os e bufio do Go.

9 min de leitura
Linguagem de Programação Go30 / 47

JSON em Go

Aprenda a fazer marshal e unmarshal de JSON em Go, controlar nomes de campos com struct tags, e transmitir JSON com eficiência usando Encoder e Decoder.

9 min de leitura
Linguagem de Programação Go31 / 47

Time em Go

Aprenda como Go representa o tempo com leituras de wall clock e monotonic clock, e como trabalhar com os tipos time.Time e time.Duration da biblioteca padrão.

8 min de leitura
Linguagem de Programação Go32 / 47

HTTP em Go

Aprenda a construir clients e servers HTTP em Go com o pacote net/http, fazendo requests, usando handlers e roteando com ServeMux e path wildcards.

9 min de leitura
Linguagem de Programação Go33 / 47

Pacote context

Aprenda como o pacote context do Go permite cancelamento, deadlines e valores com escopo de requisição em fronteiras de API e operações concorrentes.

8 min de leitura
Linguagem de Programação Go34 / 47

Testes

Aprenda como o pacote testing e o comando go test cobrem tudo que você precisa, de assertions básicas a table-driven tests e setup de pacote com TestMain.

9 min de leitura
Linguagem de Programação Go35 / 47

Generics

Aprenda como os generics do Go permitem reuso de código com type safety, usando type parameters e constraints para eliminar duplicação e casts inseguros.

10 min de leitura
Linguagem de Programação Go36 / 47

O pacote fmt em profundidade

Domine o pacote fmt do Go — verbos de formatação, largura e alinhamento, as interfaces Stringer e GoStringer, e a família completa de funções de impressão e leitura.

11 min de leitura
Linguagem de Programação Go37 / 47

Desafios da concorrência

Entenda o que é concorrência, por que ela importa para sistemas multi-core e os desafios que ela traz: race conditions, atomicidade e critical sections.

9 min de leitura
Linguagem de Programação Go38 / 47

Deadlocks, livelocks e starvation

Aprenda a identificar e prevenir os três riscos clássicos de concorrência no Go — deadlocks, livelocks e starvation — com exemplos práticos e soluções.

10 min de leitura
Linguagem de Programação Go39 / 47

O modelo de concorrência do Go

Explore a filosofia de concorrência do Go, suas raízes no CSP, e como goroutines, channels e select formam um modelo coerente para programas concorrentes.

10 min de leitura
Linguagem de Programação Go40 / 47

Goroutines e o scheduler do Go

Aprenda o que são goroutines, como diferem de OS threads e green threads, e como o scheduler GMP do Go multiplexa goroutines pelos cores de CPU disponíveis.

11 min de leitura
Linguagem de Programação Go41 / 47

sync — WaitGroup e mutexes

Aprenda a coordenar o ciclo de vida de goroutines com WaitGroup e a proteger estado compartilhado com Mutex e RWMutex.

8 min de leitura
Linguagem de Programação Go42 / 47

sync — Cond, Once e Pool

Aprenda primitivos avançados do sync: condition variables para sinalização de eventos, Once para inicialização segura e Pool para reduzir pressão no GC.

9 min de leitura
Linguagem de Programação Go43 / 47

Channels

Aprenda como channels do Go permitem comunicação segura entre goroutines — criação, direção, semântica de bloqueio, buffering e padrões de ownership.

10 min de leitura
Linguagem de Programação Go44 / 47

O comando select

Aprenda como o select do Go coordena múltiplas operações em channels simultaneamente, trata timeouts e é usado no padrão for-select para goroutines reativas.

8 min de leitura
Linguagem de Programação Go45 / 47

Prevenindo goroutine leaks

Aprenda como goroutines vazam, por que o GC não pode ajudar e como os padrões de done channel e context garantem um caminho de saída para toda goroutine.

8 min de leitura
Linguagem de Programação Go46 / 47

Tratando erros em goroutines

Aprenda dois padrões para propagação de erros de goroutines concorrentes — o result struct e o error channel separado — e quando escolher cada um.

7 min de leitura
Linguagem de Programação Go47 / 47

Pipelines, fan-out e fan-in

Aprenda a estruturar programas concorrentes em Go como pipelines de stages conectados por channels, e como fan-out e fan-in paralelizam os stages mais lentos.

8 min de leitura