Termos de Go
150 termos de Go em português. Goroutines, channels, interfaces implícitas e a simplicidade idiomática.
A
- accept interfaces, return structsProvérbio de design: parâmetros de função devem ser interfaces pequenas, para flexibilidade, e os retornos…
- alinhamento de structRegra pela qual o compilador insere bytes de preenchimento entre os campos para que cada um comece num…
- appendFunção embutida que acrescenta elementos ao fim de um slice e devolve o slice resultante, realocando o array…
- arraySequência de tamanho fixo e de um único tipo, em que o tamanho faz parte do tipo: [3]int e [4]int são tipos…
- atomicPacote sync/atomic com operações indivisíveis em inteiros e ponteiros, como Add e Load, e tipos como…
B
- backing arrayArray real que guarda os elementos por trás de um slice. Vários slices podem apontar para o mesmo, e por…
- benchmarkFunção BenchmarkXxx(b *testing.B) que mede o desempenho de um trecho, repetindo-o b.N vezes. Roda com go…
- buffered channelChannel criado com capacidade maior que zero. O envio só bloqueia quando o buffer está cheio, e o…
- bufio.ScannerTipo do pacote bufio que lê entrada em partes, por padrão linha a linha, de qualquer io.Reader. Scan avança…
- build tagsRestrições escritas em //go:build que incluem ou excluem um arquivo do build conforme sistema, arquitetura…
C
- capacidade do sliceQuantos elementos o slice comporta no array subjacente antes de precisar realocar. Obtém-se com cap()…
- captura de variável de laçoArmadilha em que closures criadas dentro de um for compartilhavam a mesma variável de laço. Desde o Go 1.22…
- channelTubo tipado que permite goroutines enviarem e receberem valores de forma sincronizada. Criado com make(chan…
- closed channelChannel encerrado com close. Receber dele devolve os valores restantes e depois o zero value sem bloquear…
- closureFunção anônima que captura variáveis do escopo onde foi criada e continua acessando-as mesmo depois que esse…
- cobertura de testesMedida da parte do código executada pelos testes, gerada com go test -cover. O Go também exporta um perfil…
- comma okIdioma que usa um segundo retorno booleano para saber se a operação teve sucesso, em consulta a map, type…
- comparableConstraint predefinida satisfeita por tipos que aceitam == e !=, como números, strings, ponteiros e structs…
- constante sem tipoConstante literal ou declarada sem tipo explícito que só ganha tipo ao ser usada, com precisão arbitrária…
- constraintInterface que restringe quais tipos podem ocupar um parâmetro de tipo, como any, comparable ou uma lista de…
- contextPacote e tipo que carregam prazo, sinal de cancelamento e valores atravessando chamadas e goroutines. É…
- conversão de tipoTransformação explícita de um valor para outro tipo, escrita como T(x). Go não faz conversão implícita entre…
- cross-compilationCompilar para outro sistema ou arquitetura apenas definindo as variáveis GOOS e GOARCH, sem toolchain extra…
D
- data raceAcesso simultâneo de duas ou mais goroutines à mesma variável, com pelo menos uma escrita e sem…
- deadlockSituação em que goroutines ficam bloqueadas para sempre, cada uma esperando algo que outra deveria fazer. O…
- declaração curtaForma de declarar e inicializar uma variável com :=, deixando o compilador inferir o tipo. Só vale dentro de…
- deferPalavra-chave que agenda uma chamada de função para executar quando a função atual terminar, em ordem…
- defer em laçoArmadilha de usar defer dentro de um for: as chamadas adiadas só rodam quando a função termina, não ao fim…
- direção de channelRestrição no tipo do channel para só enviar (chan<- T) ou só receber (<-chan T). Documenta a intenção da…
- diretiva embedComentário //go:embed que incorpora arquivos ou pastas ao binário em tempo de compilação, expondo-os como…
- diretiva replaceLinha do go.mod que troca um módulo por outro caminho ou versão, como uma pasta local ou um fork, sem…
- done channelChannel de sinalização, geralmente chan struct{}, que é fechado para avisar várias goroutines de que devem…
E
- errgroupTipo do módulo golang.org/x/sync que roda um conjunto de goroutines, espera todas e devolve o primeiro erro…
- erro customizadoTipo próprio que implementa a interface error com o método Error() string, podendo carregar campos extras…
- erro sentinelaErro predefinido em variável de pacote, como io.EOF ou sql.ErrNoRows, criado com errors.New e comparado…
- error wrappingTécnica de embrulhar um erro dentro de outro, acrescentando contexto, com fmt.Errorf e o verbo %w. O erro…
- errors.AsFunção que procura na cadeia de erros um que seja de um tipo específico e o copia para uma variável alvo…
- errors.IsFunção que percorre a cadeia de erros embrulhados e diz se algum deles é igual a um erro alvo, normalmente…
- escape analysisAnálise feita pelo compilador para decidir se uma variável pode ficar na pilha ou se deve ir para o heap…
F
- fallthroughPalavra-chave que, no fim de um case do switch, faz o fluxo continuar no corpo do case seguinte sem avaliar…
- fan-out fan-inPadrão em que várias goroutines consomem do mesmo channel (fan-out) e seus resultados são reunidos em um…
- full slice expressionFatiamento de três índices, a[i:j:k], que também limita a capacidade do resultado e impede o append de…
- função construtoraConvenção de criar valores por uma função chamada NewTipo, que devolve o tipo já inicializado. Go não tem…
- função initFunção especial chamada init, sem parâmetros nem retorno, executada automaticamente uma vez por pacote antes…
- função variádicaFunção cujo último parâmetro aceita zero ou mais argumentos do mesmo tipo, declarado com ...T e visto dentro…
- functional optionsPadrão para configurar um construtor com funções opcionais, como NewServer(WithPort(80)). Cada opção é uma…
- fuzzingTeste que gera entradas automáticas e mutadas para descobrir falhas inesperadas. Em Go, desde a versão 1.18…
G
- garbage collectorMecanismo do runtime que recupera automaticamente a memória de objetos inalcançáveis. O do Go é concorrente…
- genericsRecurso do Go 1.18 que permite escrever funções e tipos parametrizados por tipo, como func Max[T…
- go buildComando que compila os pacotes e gera o binário de um programa main, geralmente autossuficiente. Não instala…
- go generateComando que executa as linhas //go:generate encontradas nos arquivos-fonte, usadas para gerar código…
- go installComando que compila um pacote main e instala o binário na pasta GOBIN, ou em GOPATH/bin. Com @versão…
- go modSubcomando da ferramenta go que gerencia módulos: cria o go.mod com go mod init, que registra o caminho do…
- go mod tidyComando que sincroniza o go.mod e o go.sum com o código: adiciona dependências importadas que faltam e…
- go runComando que compila o programa em uma pasta temporária e o executa em seguida, sem deixar binário no…
- go sumArquivo gerado pelo Go com os hashes criptográficos de cada versão de módulo usada. Garante que as…
- go testComando que compila e roda os testes dos pacotes. Procura arquivos terminados em _test.go e funções TestXxx…
- go vetFerramenta que analisa o código em busca de erros prováveis que compilam, como verbos de Printf errados…
- go workSubcomando que cria e gerencia um workspace, um arquivo go.work que une vários módulos locais para serem…
- gofmtFormatador oficial de código Go. Reescreve os arquivos em um único estilo padrão, com tabs e alinhamento…
- goimportsFerramenta que faz o que o gofmt faz e também adiciona imports que faltam e remove os não usados…
- golangci-lintExecutor de linters para Go que roda dezenas de analisadores, como staticcheck e errcheck, em paralelo…
- goroutineFunção executada de forma concorrente, gerenciada pelo runtime do Go e bem mais leve que uma thread do…
- goroutine leakGoroutine que nunca termina porque ficou bloqueada esperando um channel, um lock ou um sinal que nunca vem…
H
- http.HandlerInterface do net/http com um método, ServeHTTP(ResponseWriter, *Request). Qualquer tipo que a implemente…
- httptestPacote net/http/httptest que testa handlers HTTP sem abrir porta de verdade, com NewRecorder para capturar a…
I
- identificador em brancoO sublinhado _, usado para descartar um valor que o compilador exigiria usar, como um retorno, um índice ou…
- identificador exportadoNome que começa com letra maiúscula e, por isso, fica visível para outros pacotes. Com letra minúscula, o…
- importação em brancoImportar um pacote com o identificador _ só para executar sua função init, sem usar nenhum nome exportado…
- inferência de tiposCapacidade do compilador de deduzir os argumentos de tipo de uma chamada genérica a partir dos argumentos…
- interface implícitaEm Go, um tipo satisfaz uma interface apenas por ter os métodos exigidos, sem declarar 'implements'. O…
- interface vaziaInterface sem métodos, escrita interface{} ou any, que qualquer valor satisfaz. Guarda valores de tipo…
- io.ReaderInterface do pacote io com um único método, Read(p []byte) (n int, err error). Representa qualquer fonte de…
- iotaIdentificador predeclarado que gera constantes inteiras sequenciais dentro de um bloco const, começando em 0…
L
- laço forÚnico comando de repetição de Go. Assume as formas clássica com três partes, só com condição (como while)…
- layout de dataFormato de data e hora do pacote time, escrito com a data de referência 2006-01-02 15:04:05, em vez de…
- ldflagsOpção -ldflags do go build que passa flags ao linker. Com -X pacote.var=valor, injeta valores em variáveis…
M
- makeFunção embutida que cria e inicializa slices, maps e canais, com tamanho ou capacidade opcionais.
- mapColeção de pares chave-valor implementada como tabela hash. A chave precisa ser de um tipo comparável com ==.
- map nilMap não inicializado, zero value do tipo. Pode ser lido, devolvendo zero values, e percorrido, mas gravar…
- marshalConverter um valor Go em texto serializado, em geral JSON, com json.Marshal. O inverso é Unmarshal. Só…
- method setConjunto de métodos que um tipo possui para fins de interface: T inclui só métodos de receiver valor, e *T…
- method valueExpressão como obj.Method sem chamar o método: gera uma função já ligada àquele receiver. O receiver é…
- método promovidoMétodo de um tipo embutido que passa a ser chamado diretamente na struct externa, como se fosse dela.
- modelo de memóriaEspecificação que define quando uma escrita em uma goroutine é garantidamente visível em outra. A relação…
- mutexTrava de exclusão mútua do pacote sync. Lock e Unlock garantem que só uma goroutine por vez acesse a seção…
N
- newFunção embutida que aloca memória zerada para um tipo e devolve um ponteiro para ela. new(T) retorna *T…
- nil channelChannel não inicializado, valor nil. Enviar ou receber dele bloqueia para sempre, o que é útil dentro de um…
- nil pointer dereferencePanic em tempo de execução ao ler ou escrever através de um ponteiro nil. É um dos erros mais comuns em…
O
P
- packageUnidade de organização do código em Go: todo arquivo declara a que pacote pertence, e os arquivos da mesma…
- pacote internalDiretório chamado internal cujo código só pode ser importado por pacotes que estejam na árvore do diretório…
- pacote slicesPacote da biblioteca padrão desde o Go 1.21 com funções genéricas para slices: Sort, Contains, Index…
- panicFunção embutida que interrompe o fluxo normal, executa os defers pendentes e derruba o programa com um stack…
- passagem por valorEm Go todo argumento é copiado ao chamar uma função, que altera só a cópia. Para alterar o original…
- pipelineSérie de etapas ligadas por channels, em que cada etapa é uma goroutine que recebe valores da anterior, os…
- pointer receiverReceiver declarado como *T, que dá ao método acesso ao valor original em vez de uma cópia, permitindo…
- ponteiroVariável que guarda o endereço de memória de outro valor. Em Go se obtém com & e se acessa o valor apontado…
- pprofFerramenta de profiling do Go que mostra onde o programa gasta CPU, memória e tempo bloqueado. Lê perfis…
R
- race detectorFerramenta embutida, ativada com a flag -race, que instrumenta o programa para apontar acessos concorrentes…
- rangePalavra-chave que percorre slices, arrays, strings, maps, canais, inteiros e funções iteradoras em um for…
- range over funcRecurso do Go 1.23 que permite usar for range com uma função iteradora, como iter.Seq, que chama um yield…
- range sobre inteiroForma do Go 1.22 em que for i := range n repete n vezes, com i indo de 0 a n-1, dispensando o for clássico…
- receiverParâmetro especial, escrito entre func e o nome, que liga uma função a um tipo e a transforma em método.
- recoverFunção embutida que retoma o controle depois de um panic, devolvendo o valor passado a ele. Só funciona…
- representação de interfaceForma como o runtime guarda um valor de interface: um par com o tipo dinâmico (ou a tabela de métodos) e um…
- retorno múltiploCapacidade de uma função devolver mais de um valor. É a base do tratamento de erros em Go: o resultado vem…
- retorno nomeadoResultados da função declarados com nome na assinatura, que viram variáveis locais e permitem um return sem…
- runeTipo que representa um ponto de código Unicode, alias de int32. É o que o range de uma string entrega e o…
- RWMutexMutex do pacote sync que permite vários leitores simultâneos com RLock, mas só um escritor por vez com Lock…
S
- schedulerEscalonador do runtime do Go que distribui milhares de goroutines (G) sobre poucas threads do sistema (M)…
- selectComando que espera em várias operações de channel ao mesmo tempo e executa a primeira que ficar pronta. Com…
- semáforo com channelTécnica de limitar a concorrência usando um channel com buffer como contador: enviar ocupa uma vaga e…
- ServeMuxRoteador padrão do net/http. Desde o Go 1.22 aceita padrões com método e curingas, como GET /itens/{id}, e o…
- shadowingQuando uma variável declarada num escopo interno recebe o mesmo nome de outra externa e a esconde. Com := é…
- sliceVisão flexível sobre um array, formada por ponteiro, tamanho e capacidade. É a estrutura de lista mais usada…
- slice headerEstrutura interna de três palavras (ponteiro para o array, len e cap) que representa um slice. Atribuir ou…
- slice nilSlice sem array subjacente, com len e cap zero, que vale nil. É o zero value de um slice e funciona com len…
- slogPacote log/slog, parte da biblioteca padrão desde o Go 1.21, para logs estruturados com nível e pares…
- string imutávelEm Go, uma string é uma sequência imutável de bytes, normalmente em UTF-8. Não se altera um byte no lugar…
- StringerInterface do pacote fmt com o método String() string. Qualquer tipo que a implemente controla como seus…
- strings.BuilderTipo do pacote strings para montar texto aos poucos sem copiar a string a cada acréscimo. Usa um buffer…
- structTipo composto que agrupa campos nomeados, cada um com seu tipo. É a forma de modelar dados em Go, no lugar…
- struct embeddingIncluir um tipo dentro de uma struct sem dar nome ao campo, promovendo seus campos e métodos. É a composição…
- struct tagTexto entre crases ao lado de um campo, lido por reflexão por bibliotecas como o encoding/json para…
- struct vaziaO tipo struct{}, sem campos, ocupa zero bytes. Serve como valor de sinalização ou para criar conjuntos com…
- subtestTeste filho criado com t.Run(nome, func(t *testing.T)). Cada subteste tem nome próprio, pode falhar sozinho…
- sufixo de versão majorRegra dos módulos: a partir da v2, o caminho do módulo termina em /v2, /v3 etc. Versões major incompatíveis…
- sync.OnceTipo do pacote sync cujo método Do executa uma função exatamente uma vez, mesmo com chamadas concorrentes…
- sync.PoolCache de objetos temporários reutilizáveis do pacote sync. Get pega um objeto ou cria um novo e Put o…
T
- table-driven testEstilo de teste em que os casos ficam em uma slice de structs com entrada e saída esperada, percorrida por…
- time.DurationTipo que representa um intervalo de tempo em nanossegundos, implementado como int64. Multiplicado por…
- tipo definidoNovo tipo criado com 'type Nome T', que tem a mesma representação de T mas é distinto dele e pode ter seus…
- tipo funçãoTipo definido a partir de uma assinatura de função, como type Handler func(string) error. Funções viram…
- tipo genéricoTipo declarado com parâmetros de tipo, como type Pilha[T any] struct. Cada uso, como Pilha[int], instancia…
- tipo subjacenteTipo base de um tipo definido, como int em type Celsius int. Em constraints genéricas, ~int aceita qualquer…
- tratamento de erroIdioma em que funções devolvem um error como último retorno e o chamador o verifica com if err != nil, em…
- type aliasDeclaração 'type A = B' que dá outro nome ao mesmo tipo, sem criar um tipo novo. Serve para migrar pacotes e…
- type assertionOperação x.(T) que extrai de uma interface o valor concreto de tipo T. A forma com ok evita panic quando o…
- type parameterNome entre colchetes após o identificador de uma função ou tipo genérico, como T em func Map[T any], que…
- type switchUm switch que escolhe o ramo pelo tipo dinâmico de uma interface, usando a forma x.(type). Em cada case a…
- typed nilInterface que guarda um ponteiro nil de tipo concreto: a interface não é nil, porque tem tipo, apesar de o…
U
- unbuffered channelChannel criado sem capacidade, com make(chan T). Cada envio só completa quando outra goroutine está pronta…
- união de tiposLista de tipos separados por barra vertical em uma interface de constraint, como int | string. Define…
- unsafePacote que dá acesso a operações fora do sistema de tipos do Go, como unsafe.Pointer, Sizeof e String, para…
V
- variável não usadaErro de compilação 'declared and not used': Go se recusa a compilar quando uma variável local é declarada e…
- verbo de formataçãoCódigo com porcentagem usado em Printf e Sprintf, como %v, %+v, %#v, %T, %d e %s, que escolhe como o valor é…
W
- WaitGroupTipo do pacote sync que espera um conjunto de goroutines terminar. Add soma tarefas, Done conclui uma e Wait…
- worker poolPadrão com um número fixo de goroutines que consomem tarefas de um mesmo channel. Limita a concorrência e…