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
*Te 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
syncpara proteger dados compartilhados entre goroutines. - WaitGroup
- Contador do pacote
syncusado 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 comif 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.modremovendo dependências não usadas e adicionando as que faltam.