O que é e como usar o Go Modules

Se você já desenvolve em Go, provavelmente já ouviu falar em Go Modules. Introduzido oficialmente no Go 1.11 e aprimorado nas versões subsequentes, os Go Modules mudaram a maneira como gerenciamos dependências e organizamos projetos.

Neste post, vamos explorar o que são Go Modules, porque eles são importantes e como utilizá-los de forma eficiente em seus projetos.

O que são Go Modules?

Go Modules é a maneira oficial de gerenciar dependências em projetos Go. Antes de sua introdução, o Go utilizava o conceito de GOPATH para organizar o código, o que trazia várias limitações, como a necessidade de manter todo o código dentro de uma estrutura específica de diretórios e a dificuldade em gerenciar diferentes versões de bibliotecas.

Com os Go Modules, você pode:

  • Trabalhar fora do GOPATH.
  • Especificar versões de dependências.
  • Garantir reprodutibilidade nos builds.
  • Facilitar o gerenciamento de projetos grandes e com muitas dependências.
Leia mais »

Introdução ao package Viper

A configuração de uma aplicação é um dos pilares essenciais para garantir flexibilidade e adaptabilidade em diferentes ambientes de execução, como desenvolvimento, teste e produção.

Em Go, gerenciar essas configurações pode ser um desafio, especialmente quando lidamos com múltiplas fontes, como arquivos, variáveis de ambiente e flags de linha de comando.

É aqui que entra o Viper, um package poderoso para gerenciamento de configuração que simplifica esse processo.

O que é o Viper?

O Viper é um package open source desenvolvido para ajudar desenvolvedores Go a gerenciar configurações de maneira eficiente e flexível. Ele permite que sua aplicação leia configurações de várias fontes, como:

  • Arquivos de configuração (YAML, JSON, TOML, HCL, etc.)
  • Variáveis de ambiente
  • Flags de linha de comando
  • Key-value stores (como Consul)
  • Configurações remotas
Leia mais »

Como integrar uma aplicação com Kubernetes

O Kubernetes se tornou uma ferramenta fundamental para a orquestração de contêineres em ambientes modernos de desenvolvimento.

Um dos recursos mais importantes dentro do Kubernetes é o Secrets, que permite o armazenamento seguro de informações sensíveis como credenciais de acesso, certificados e chaves de API.

No entanto, acessar e manipular esses dados diretamente pelo Kubernetes pode ser um desafio, especialmente quando se trata de automatização e integração com aplicações Go.

Neste post, exploraremos como utilizar o client-go para acessar e gerenciar Secrets diretamente a partir de um CLI escrito em Go.

O que é o recurso Secrets?

Secrets são recursos do Kubernetes usados para armazenar e gerenciar informações sensíveis, como senhas, tokens de autenticação e certificados. Diferente de ConfigMaps, os Secrets são tratados de maneira mais segura, sendo armazenados em formato base64 e criptografados no etcd (banco de dados do Kubernetes).

Leia mais »
Código Idiomático

Como Escrever Código Idiomático em Go

Se você está aprendendo Go ou já tem experiência com a linguagem, provavelmente já ouviu falar sobre “código idiomático”. Mas o que realmente significa escrever código idiomático em Go? Por que isso é importante e como podemos identificar boas práticas que seguem esse princípio?

Neste post, vamos explorar o conceito de código idiomático. Além disso, veremos exemplos práticos que mostram a diferença entre código idiomático e código que não segue as melhores práticas.

O que é código idiomático?

Em termos simples, código idiomático é aquele que segue as práticas e convenções estabelecidas da linguagem, utilizando seus recursos de maneira eficaz, clara e intuitiva.

Mas, mais do que isso, escrever código idiomático em Go significa escrever código que:

Leia mais »

Introdução ao WebAssembly em Go

Nos últimos anos, o desenvolvimento web tem passado por transformações significativas, e uma das tecnologias que mais tem despertado o interesse de desenvolvedores é o WebAssembly (Wasm).

Originalmente projetado para ser executado em navegadores, o Wasm se tornou uma tecnologia promissora também para ambientes de backend. Mas como o WebAssembly se relaciona com o Go? E por que você deveria se importar?

Antes de responder essas perguntas, vamos explorar um pouco melhor do que é WebAssembly e onde essa tecnologia pode ser aplicada.

O que é WebAssembly?

WebAssembly é um formato binário que pode ser executado em diversos ambientes, como navegadores, servidores e dispositivos de IoT. Em linhas gerais, um ambiente Wasm oferece uma maneira de rodar código de baixo nível de maneira segura e eficiente, independentemente da linguagem de programação utilizada para criar o binário.

Leia mais »

Como gerar PDFs

Os PDFs são amplamente utilizados para compartilhar documentos de maneira consistente e confiável. Seja para gerar relatórios, faturas ou certificados, criar PDFs programaticamente é uma necessidade comum em muitas aplicações modernas.

O vasto universo open source de packages Go oferece várias bibliotecas para manipulação de PDFs. Um dos mais populares é o gopdf, que fornece uma API intuitiva para criar PDFs sem a necessidade de packages externos pesados ou dependência de outros softwares instalados no sistema.

Neste post, você aprenderá como usar o gopdf para criar, personalizar e exportar PDFs em Go. Vamos explorar desde um exemplo simples até recursos mais avançados, como adicionar imagens e tabelas, além de exportar PDFs via HTTP.

O package gopdf

O gopdf é um package poderoso e leve para gerar PDFs em Go. Projetado para ser simples e eficiente, ele oferece uma variedade de funcionalidades:

Leia mais »

Memory leaks em maps

Continuando nossa série de posts sobre garbage collector e memory leaks em Go, neste post exploraremos o que são maps e como acontecem seus memory leaks.

Antes de ler esse post, convido a ler os posts anteriores da série:

O que são maps

Map é uma estrutura chave-valor não ordenada, altamente eficientes e que baseia na estrutura de dados hash table. Internamente, uma hash table nada mais é do que um array de buckets, onde cada bucket é um ponteiro para um array chave-valor.

Cada array chave-valor tem um tamanho fixo de 8 elementos. Quando esse array está cheio (bucket overflow), um novo array de 8 elementos é criado e “linkado” ao array anterior.

Leia mais »

gonew: Como criar projetos a partir de templates

Ouvindo aos pedidos da comunidade, mesmo que não incorporado oficialmente ao CLI do Go ainda, o time de desenvolvimento da linguagem Go criou um novo programa capaz de ajudar a iniciar novos projetos. Seu nome, pelo menos por enquanto, gonew.

Como dito no parágrafo anterior, a finalidade desse novo programa é auxiliar na criação de novos projetos Go. Com ele, podemos utilizar um repositório template como base para novas aplicações.

Sem mais delongas, vamos meter a mão na massa, ou melhor, no teclado.

Instalação

Para conseguir utilizar esse novo programa, precisamos tê-lo instalado. A forma mais fácil, já que você muito provavelmente tem o Go instalado na sua máquina, é utilizar o comando go install.

go install golang.org/x/tools/cmd/gonew@latest
Leia mais »

O que é e como utilizar protocol buffers

Protocol buffers, protobuf ou simplesmente proto, é uma linguagem criada pela Google para serialização de dados. Para facilitar o entendimento, podemos comparar o protobuf com XML ou JSON. No entanto, dados serializados com proto, são MUITO menores quando comparados com as outras duas tecnologias.

Outro ponto importante é que, após escrever um arquivo proto, utilizamos um programa chamado protoc para gerar código em Go, Java, Python, C#, C, C++, entre outras linguagens. Código esse que contém todas as classes e métodos que estiverem declarados dentro dos arquivos proto.

Mas calma! Antes de falar mais sobre esse código gerado, vamos entender o que compõe e como criar um arquivo proto.

Syntax

A primeira coisa que precisamos fazer em um arquivo proto é definir sua syntax. Essa syntax nada mais é do que a versão do protobuf que iremos utilizar.

Leia mais »
books in black wooden book shelf

Lista de materiais para estudar Go

Aprender uma nova tecnologia nunca é fácil, pois normalmente ficamos perdidos sobre onde encontrar conteúdo de qualidade. Nesse post, vou listar alguns locais/livros onde vou para estudar e me atualizar sobre nossa querida Golang.

Blogs

The Go Blog – blog oficial da linguagem

https://go.dev/blog/

Embora não haja atualizações constantes, você sempre irá encontrar posts importantes e sobre questões complexas, assim como anúncios de releases e pesquisas.

Aprenda Golang – Blog que você está

https://ttemporin.dev/

Pode parecer estranho eu recomendar o blog que você está, porém como eu não sei se você chegou até aqui pelo Google, vale dizer que nós postamos conteúdos semanalmente.

Nesses posts abordamos assuntos como, frameworks, benchmarks, tutoriais iniciantes e avançados sobre a linguagem e como algumas partes dela funcionam por debaixo dos panos.

Leia mais »