Glossário Go/Golang

Referência rápida dos principais termos e conceitos da linguagem Go, explicados em português.

Linguagem e Compilação

Go (Golang)
Linguagem de programação de código aberto criada pelo Google em 2009. Projetada para ser simples, eficiente e excelente para programação concorrente.
Compilação estática
Go compila diretamente para código de máquina, gerando um binário único sem dependências externas.
Cross-compilation
Capacidade de compilar código Go para diferentes sistemas operacionais e arquiteturas a partir de uma única máquina (ex: compilar para Linux a partir do macOS).

Tipos e Estruturas de Dados

Struct
Tipo composto que agrupa campos nomeados. Equivalente a classes em outras linguagens, mas sem herança.
Interface
Conjunto de assinaturas de métodos. Em Go, interfaces são satisfeitas implicitamente — não é necessário declarar que um tipo implementa uma interface.
Slice
Referência dinâmica a um array. Diferente de arrays (tamanho fixo), slices podem crescer e diminuir.
Map
Estrutura de dados chave-valor (hash table). Declarado como map[TipoChave]TipoValor.
Channel (Canal)
Mecanismo de comunicação entre goroutines. Permite enviar e receber valores de forma segura entre goroutines concorrentes.
Pointer (Ponteiro)
Variável que armazena o endereço de memória de outro valor. Declarado com *T e referenciado com &.

Concorrência

Goroutine
Função executada concorrentemente pelo runtime do Go. Muito mais leve que threads do sistema operacional — é possível rodar milhares simultaneamente.
Channel
Tubo tipado para comunicação entre goroutines. Pode ser buffered (com capacidade) ou unbuffered (síncrono).
Select
Instrução que permite esperar em múltiplas operações de channel simultaneamente. Semelhante a um switch para channels.
Mutex
Mecanismo de exclusão mútua do pacote sync para proteger dados compartilhados entre goroutines.
WaitGroup
Contador do pacote sync usado para esperar que um grupo de goroutines termine sua execução.

Controle de Fluxo e Erros

Defer
Adia a execução de uma função para o momento em que a função que a contém retorna. Útil para limpeza de recursos.
Panic
Interrompe a execução normal do programa. Usado para erros irrecuperáveis.
Recover
Recupera o controle de uma goroutine em panic. Só funciona dentro de funções defer.
Error
Interface padrão de erro em Go (error). Erros são valores — tratados explicitamente com if err != nil.

Módulos e Pacotes

Go Modules
Sistema de gerenciamento de dependências do Go. Definido pelo arquivo go.mod.
Package (Pacote)
Unidade de organização de código em Go. Todo arquivo Go pertence a um pacote.
go.mod
Arquivo que define o módulo Go, sua versão mínima do Go e suas dependências.
go.sum
Arquivo que contém os hashes criptográficos das dependências para garantir integridade.

Ferramentas

go build
Compila pacotes Go e suas dependências.
go run
Compila e executa um programa Go.
go test
Executa testes automatizados (arquivos _test.go).
go fmt / gofmt
Formata código Go automaticamente seguindo o estilo padrão da linguagem.
go vet
Analisa código Go em busca de erros comuns que o compilador não detecta.
go mod tidy
Limpa o go.mod removendo dependências não usadas e adicionando as que faltam.

Veja também