Categoria

Golang

Funções variádicas
Golang

Funções variádicas

Funções variádicas são funções que podem receber um número variável de argumentos de um determinado tipo. Em Go, isso é declarado usando a sintaxe ...Tipo antes do nome do parâmetro. O exemplo mais famoso e amplamente utilizado é fmt.Println, que aceita qualquer quantidade de argumentos:

05/05/2026
Fuzz testing
Golang 05/05/2026

Fuzz testing

Fuzz testing (ou fuzzing) é uma técnica de teste automatizado que fornece entradas inválidas, inesperadas ou aleatórias para um programa, com o objetivo de descobrir bugs, vulnerabilidades de segurança e comportamentos inesperados. Diferentemente dos testes unitários tradicionais, onde o desenvolvedor define manualmente casos de teste específicos, o fuzzing gera automaticamente milhares ou milhões de variações de entrada, explorando caminhos de código que dificilmente seriam cobertos manualmente

Garbage collector do Go: como funciona
Golang 05/05/2026

Garbage collector do Go: como funciona

O garbage collector (GC) é um componente essencial do runtime do Go, responsável por gerenciar automaticamente a alocação e liberação de memória no heap. Diferente de linguagens como C ou Rust, onde o programador gerencia explicitamente a memória, o Go utiliza um coletor de lixo para identificar e recuperar objetos que não são mais alcançáveis pelo programa.

Embed directive: incorporando arquivos no binário
Golang 05/05/2026

Embed directive: incorporando arquivos no binário

A partir do Go 1.16, a linguagem introduziu uma funcionalidade nativa e elegante para incorporar arquivos diretamente no binário compilado: a diretiva //go:embed. Antes dessa adição, desenvolvedores precisavam recorrer a ferramentas externas como go-bindata, packr ou statik para resolver o problema de distribuir arquivos estáticos junto com a aplicação.

Embedding de interfaces e structs
Golang 05/05/2026

Embedding de interfaces e structs

Go não possui herança tradicional como linguagens orientadas a objeto. Em vez disso, oferece composição via embedding — um mecanismo onde uma struct ou interface é "embutida" anonimamente em outra, promovendo seus campos e métodos para o tipo pai.

Erros em Go: o tipo error e a convenção de retorno
Golang 05/05/2026

Erros em Go: o tipo error e a convenção de retorno

Diferente de linguagens como Java, Python ou JavaScript, Go não possui mecanismos de exceção (try/catch/finally). Em vez disso, Go adota uma abordagem explícita e direta: erros são valores comuns que retornam das funções. Essa filosofia elimina a necessidade de blocos especiais de tratamento e torna o fluxo de erro visível no código.

Dependency injection com wire ou fx
Golang 05/05/2026

Dependency injection com wire ou fx

Dependency Injection (DI) é um padrão de projeto onde as dependências de um componente são fornecidas externamente, em vez de criadas internamente. Em Go, isso significa que uma struct recebe suas dependências (como conexões de banco, serviços HTTP, loggers) através do construtor ou setters, em vez de instanciá-las diretamente.

Detector de race conditions: go race
Golang 05/05/2026

Detector de race conditions: go race

Race conditions ocorrem quando duas ou mais goroutines acessam a mesma variável simultaneamente, e pelo menos um desses acessos é de escrita. Em Go, o modelo de concorrência baseado em goroutines e canais é poderoso, mas também vulnerável a data races se não for usado corretamente.

Documentação de API com Swagger e swaggo
Golang 05/05/2026

Documentação de API com Swagger e swaggo

Swagger (agora OpenAPI) é um padrão amplamente adotado para descrever, produzir, consumir e visualizar serviços RESTful. Uma API bem documentada reduz drasticamente o atrito entre equipes de front-end, back-end e terceiros que consomem seus endpoints.

Done channel e cancelamento
Golang 05/05/2026

Done channel e cancelamento

O padrão done channel é uma das técnicas mais elegantes em Go para sinalizar cancelamento entre goroutines. A ideia central é utilizar um channel do tipo struct{} (vazio) que, quando fechado, avisa a todos os ouvintes que devem encerrar suas operações.