O que é Go
Go é um projeto de código aberto, multiplataforma, desenvolvido e mantido pelo time do Google além de outros contribuidores e distribuído com a licença BSD. O projeto nasce com o objetivo de tornar seus programadores mais produtivos e ser uma linguagem expressiva, concisa, limpa e eficiente. Bom, isso é o que está descrito em sua documentação, por hora vamos apenas acreditar :) . Podemos encontrar mais informações sobre o projeto aqui.
Leia a documentação da linguagem, esse é o primeiro passo para entender o que é e o que esperar ao aprendê-la.
Saber os objetivos do ecossistema é fundamental para entender onde é possível e viável usar a linguagem. Perceba que entender isso é como conhecer qualquer ferramenta que se proponha a usar, tentar apertar um parafuso com um martelo tende a não dar muito certo 😁.
E porque os objetivos do ecossistema e não da linguagem?
Bom, esse é um erro muito comum para iniciantes. É fundamental perceber que o que limita o uso de uma linguagem, não é sua sintaxe. No geral a linguagem e seu ecossistema nascem e evoluem em um mesmo objetivo, porém é possível que isso mude com o tempo. O JavaScript é um exemplo muito claro disso, foi por muito tempo uma linguagem limitada ao browser, com aplicabilidade apenas em sistemas web, porém esse cenário mudou completamente após a chegada do NodeJs, hoje vemos JavaScript para todos os lados, seja em servidores ou até em pequenos dispositivos embarcados.
Uma impressão inicial, e que me agrada bastante, é que logo no inicio de sua documentação, Go deixa claro ter seu foco em aproveitar o máximo de maquinas multicore e em rede, esse objetivo é super importante, porque iniciar em um ecossistema que não trabalha bem com escalabilidade seja ela vertical ou horizontal é hoje na minha visão uma perda de tempo na grande maiorias dos casos.
Outro ponto que me interessou bastante é o fato de Go ser é uma linguagem com tipagem estática e compilada, o que destoa bastante das linguagens que venho trabalhando nos últimos tempos, e pode ser um trufo interessante em novos projetos.
Entendendo a sintaxe básica da linguagem
Ao iniciar em uma linguagem é importante entender sua sintaxe básica e sempre que possível suas origens. Quase todas as linguagens modernas não começaram do zero, foram inspiradas em linguagens já existentes. Traçar sua ancestralidade ajuda a criar familiaridade mais rapidamente caso já possua domínio de outra com ancestral comum. Por exemplo, linguagens baseadas em C tendem a ter características em comum e quanto antes perceber isso, mais rápido vai se sentir a vontade na nova linguagem.
Go é um exemplo disso, muito de sua sintaxe é semelhante ao C, com pequenas mudanças como a falta de parênteses em volta de estruturas como for e if por exemplo. É super tranquilo se adaptar as mudanças.. abaixo um exemplo de código Go.
1 | package main |
Todos os detalhes da Especificação da linguagem podem ser encontrados aqui, é sempre bom dar uma olhada, mas essa documentação pode e deve ser consultada sempre que alguma dúvida aparecer.
A documentação da especificação do Go é muito detalhada e bem escrita, eu realmente me senti confortável ao fazer uma leitura rápida da mesma.
Configurando o ambiente de desenvolvimento
Para iniciarmos em uma nova linguagem, quase sempre, precisamos de um ambiente bem configurado de forma possibilitar a fluides no aprendizado. Hoje dificilmente instalo qualquer ambiente diretamente em minha maquina, por algum tempo usei o Vagrant para isso, porém hoje tenho trabalho quase exclusivamente com o Docker, ele possibilita testar e descartar sempre que não uso mais qualquer ambiente, deixando minha máquina sempre livre. Outro ponto importante é que consigo reproduzir o exato ambiente ao qual o sistema vai rodar quando em produção, evitando problemas de compatibilidade no momento em que coloco o sistema no ar.
O intuito desse artigo não está em usar o Docker, assim apenas me limitarei a mostrar os passos feitos e não a explica-los a fundo, mas sugiro fortemente que tire um tempinho para dominar ele, provavelmente vai ser um divisor de água no seu dia a dia como desenvolvedor.
Para iniciarmos o projeto criei um arquivo chamado “docker-compose.yml” na raiz do projeto com o seguinte conteúdo:
1 | version: "2" |
Esse arquivo é responsável por inicializar com as configurações adequadas o contêiner docker para a aplicação.
Posteriormente criei um arquivo de nome de “main.go” ainda na raiz do projeto com o seguinte conteúdo:
1 | package main |
Tudo finalizado e configurado, basta executar o comando “docker-compose run app go run main.go”, esse comando ao ser rodado a primeira vez baixa o container configurado no arquivo “docker-compose.yml” e posteriormente executa o arquivo main.go. (Esse processo pode demorar um pouco a primeira vez, dependendo de sua conexão com a internet, porém nas demais o processo é super rápido).
Assim, após finalizado o processo, todo o ambiente configurado e pronto para começarmos os trabalhos devera gerar o tão esperado Hello World em sua última linha.
Próximos Capítulos
Para continuação dessa série alguns dos próximos passos serão, entender melhor como funciona o sistema de Gerenciamento de Dependências do Go, todos os projetos, quase sem exceção dependem de ferramentas externas, Go parece ser bem completo, mas ter e entender como funciona seu gestor de dependência é fundamental.
O passo seguinte será identificar se existem e quanto maduro são os frameworks disponíveis para a linguagem, por fim minha ideia é criar uma API simples usando os principais conceitos da linguagem e posteriormente a levar para produção para que seja possível perceber as dificuldades envolvidas no processo.
Bom por hoje é isso, em breve seguimos..
Click aqui para acessar a segunda parte do artigo!!
Ou
Click aqui para acessar a terceira e ultima parte do artigo!!