Usando ldflags para definir informações de versão em aplivativos Go

Introdução

Ao implantar aplicativos em um ambiente de produção, a compilação de binários com informações de versão e outros metadados irá melhorar seu processo de monitoramento, registro e depuração através da adição de informações de identificação para ajudar a rastrear suas compilações ao longo do tempo. Essas informações de versão com frequência podem incluir dados altamente dinâmicos, como o tempo de compilação, a máquina ou o usuário que compila o binário, o ID de confirmação do Sistema de Controle de Versão (VCS) em relação ao qual foi compilado, entre outras coisas. Como esses valores estão em constante mudança, codificar esses dados diretamente no código fonte e modificá-los antes de cada nova compilação é um processo tedioso e propenso a erros: os arquivos fonte podem mover-se e as variáveis/constantes podem trocar arquivos ao longo do desenvolvimento, interrompendo o processo de compilação. Continue reading “Usando ldflags para definir informações de versão em aplivativos Go”

Entendendo o GOPATH

Introdução

Este artigo irá orientá-lo para entender o que é o GOPATH, como ele funciona e como configurá-lo. Este é um passo crucial para configurar um ambiente de desenvolvimento em Go, além de entender como o Go encontra, instala e compila arquivos fonte. Neste artigo, usaremos o GOPATH ao fazer referência ao conceito da estrutura de pastas sobe a qual iremos discutir. Vamos usar $GOPATH para nos referir à variável de ambiente que o Go usa para encontrar a estrutura de pasta. Continue reading “Entendendo o GOPATH”

Entendendo ponteiros em Go

Introdução

Quando você criar software em Go, você estará escrevendo funções e métodos. Você passa dados para essas funções como argumentos. Às vezes, a função precisa de uma cópia local dos dados e você quer que o original permaneça inalterado. Por exemplo, se você for um banco e tiver uma função que mostra ao usuário as alterações de seu saldo – dependendo do tipo de conta (poupança/investimentos) que o usuário escolha. Neste caso, você não vai querer alterar o saldo real do cliente antes que ele escolha o tipo de conta/plano de investimentos, mas apenas usar a informação em cálculos. Esse parâmetro é chamado de passagem por valor porque você está enviando o valor da variável para a função, mas não a variável em si. Continue reading “Entendendo ponteiros em Go”

Entendendo a visibilidade de pacotes em Go

Introdução

Ao criar um pacote em Go, normalmente, o objetivo final é tornar o pacote acessível para uso por outros desenvolvedores, seja em pacotes de ordem mais elevada ou em programas inteiros. Ao importar o pacote, seu código poderá servir como o bloco de construção para outras ferramentas mais complexas. No entanto, apenas certos pacotes estão disponíveis para importação. Isso é determinado pela visibilidade do pacote. Continue reading “Entendendo a visibilidade de pacotes em Go”

Entendendo o init em Go

Introdução

Em Go, a função pré-definida init() faz com que uma parte do código execute antes de qualquer outra parte do seu pacote. Esse código vai executar assim que o pacote for importado e poderá ser usado quando você precisar inicializar seu aplicativo em um estado específico, como quando você tem uma configuração específica ou um conjunto de recursos com os quais seu aplicativo precisa iniciar. Ele também é usado na importação de um efeito colateral – técnica usada para definir o estado de um programa por meio da importação de um pacote específico. Isso é frequentemente usado para register [registrar] um pacote junto ao outro, para garantir que o programa está considerando o código correto para a tarefa. Continue reading “Entendendo o init em Go”