Guia Golang: Uma Lista das Principais Estruturas, IDEs e Ferramentas de Golang
Desde a sua introdução, a Linguagem de Programação Go do Google (Golang) tem vindo a experimentar uma popularidade crescente entre os utilizadores principais. Em uma pesquisa de dezembro de 2016, 89% dos 3.595 entrevistados afirmaram que programam em Go at work ou fora do trabalho.
Adicionalmente, Go ocupa a posição mais alta entre as linguagens de programação em termos de experiência e preferência. Este Julho de 2017, Go ocupa o 10º lugar na Linguagem de Programação do Ano da Tiobe, saltando da sua 55ª posição no ano passado.
Claramente, Go está a atrair muitos programadores de várias disciplinas e profissionais de outsourcing de desenvolvimento de software. E é seguro dizer que isso se deve à facilidade de usar Go.
Como uma linguagem de programação compilada e de código aberto, Go facilita a construção de software simples, confiável e eficiente por parte dos desenvolvedores. É o produto da inovação e evolução das linguagens mais conservadoras como C e C++.
With Go, a quantidade de digitação de código é reduzida e escrever APIs robustas sem sacrificar sua performance tornou-se mais fácil. Projetado para escalabilidade e simultaneidade, Go torna as otimizações possíveis. Um compilador pode realizar todo o trabalho de inspeção de código antes do tempo de execução.
Compilamos uma lista dos principais frameworks, IDEs e ferramentas para Golang para sua referência rápida. Marque-a em seu navegador para que você possa voltar sempre que estiver trabalhando com Go!
Frameworks para Golang
Aguns frameworks Web ajudam os desenvolvedores a construir aplicativos da forma mais fácil e rápida possível. Go ainda é relativamente novo, por isso é importante usar frameworks com documentação suficiente.
Aqui estão 9 frameworks que você pode usar para ajudá-lo a construir projetos usando a linguagem Go.
Revel
Como um framework de alta produtividade para Go, Revel inclui uma ferramenta Hot Code Reload que permite que você reconstrua seu projeto a cada mudança de arquivo. Também inclui uma grande variedade de recursos abrangentes e de alto desempenho, para que você não precise encontrar bibliotecas externas para integrar ao framework.
Beego
Beego é um framework MVC completo com sua própria biblioteca de logging, ORM, e frameworks web. Você não precisa encontrar e instalar bibliotecas de terceiros. Ele possui uma ferramenta interna chamada Bee Tool que vigia as mudanças de código e executa tarefas quando as mudanças são detectadas.
Beego irá poupar-lhe muitas horas, especialmente no início de um projecto quando estiver a descobrir o framework de registo ou a estrutura da aplicação.
Martini
Inspirado pelo Sinatra, o Martini é um framework extremamente leve mas poderoso. Foi desenvolvido para escrever aplicações e serviços web modulares em Golang.
Apresenta um design não intrusivo que é rápido e fácil de usar e inclui uma vasta gama de manipuladores e middleware. Ele é capaz de realizar roteamento básico, tratamento de exceções e atendimento padrão de documentos para aplicativos AngularJS no modo HTML5.
Martini tem como melhor característica o uso de reflexão, que permite aos desenvolvedores inserir dados dinamicamente nas funções do manipulador e adicionar novos serviços. O Martini também é totalmente compatível com a interface http.HandlerFunc. A desvantagem, porém, é que o framework Martini não é mais mantido.
Gin Gonic
Gin Gonic é um framework web com uma API parecida com um martini, mas com muito melhor desempenho. Se você já usou Martini antes, então você estará familiarizado com Gin Gonic. Caso contrário, você levará apenas 10 minutos para aprender Gin. É assim tão fácil!
Gin Gonic é um framework minimalista que inclui apenas as bibliotecas e funcionalidades mais essenciais. Isso o torna perfeito para desenvolver APIs REST de alto desempenho. Além disso, é 40 vezes mais rápido que o Martini.
Você pode adicionar middleware, grupos aninhados, validação JSON, e renderização, mas ainda mantém seu desempenho ideal. Gin Gonic usa httprouter, o roteador HTTP mais rápido para Go.
Buffalo
Building new web applications with Go é rápido e simples com Buffalo. Quando você está iniciando um novo projeto, Buffalo já tem tudo configurado para você – do front-end ao back-end de desenvolvimento.
Recarregamento a quente, o que significa que o comando dev irá observar os seus ficheiros .go e .html automaticamente. Ele irá então reconstruir e reiniciar o seu binário para você. Basta executar o comando dev, e você verá as mudanças entrarem em funcionamento diante dos seus olhos!
Buffalo é mais do que apenas um framework – é um eco-sistema de desenvolvimento web holístico que permite que você vá direto para construir sua aplicação.
Goji
Goji é um framework web leve e rápido que tem a composibilidade e simplicidade como sua principal prioridade. Muito parecido com net/http.ServeMux, o Goji é um multiplexador de requisição HTTP minimalista. Ele inclui suporte a Einhorn, o que possibilita que você tenha suporte a websocket no Goji.
Características adicionais incluem padrões de URL, pilha de middleware reconfigurável, desligamento gracioso, e muito mais. Goji pode ser usado na produção e já atendeu bilhões de pedidos em várias organizações.
Tiger Tonic
Inspirado pelo Dropwizard, Tiger Tonic é um framework Go para desenvolver serviços web JSON e construir APIs REST de alta performance. Para permanecer fiel aos princípios de Golang, Tiger Tonic se esforça para manter os recursos ortogonais.
A desvantagem de Tiger Tonic é sua inadequação quando se trata de construir grandes aplicações back-end.
Gocraft
Outro framework poderoso mas minimalista, o Gocraft oferece um desempenho de roteamento rápido e escalável. Ele adiciona roteamento ao pacote net/http a partir da biblioteca padrão.
Gocraft é um pacote Go mux e middleware que apresenta capacidades de casting e reflexão para que você possa digitar seu código de forma estática. Você também pode adicionar uma funcionalidade opcional com o middleware embutido ou escrever o seu próprio.
Desde que o desempenho é sempre uma das principais preocupações dos desenvolvedores, o Gocraft é uma ótima escolha para os desenvolvedores. É muito fácil escrever aplicações web backend usando o framework Gocraft.
Mango
Algo não é mantido ativamente por seu criador, Paul Bellamy, muitos usuários Go ainda o usam. A grande coisa sobre a Manga é a sua modularidade. Você pode escolher entre uma variedade de bibliotecas para incluir em seu projeto.
Mango permite que você construa módulos reutilizáveis da funcionalidade HTTP tão rápida e facilmente quanto possível. Ele compila uma lista de middleware e aplicativos em um único objeto de servidor http para manter seu código auto-contido.
>
Integrated Development Environment (IDEs) para Golang
IDEs para Golang estão ganhando popularidade, juntamente com a linguagem Go. Enquanto muitos desenvolvedores ainda preferem usar editores de texto, muitos preferem usar IDEs também.
Se você estiver trabalhando em um projeto de grande escala com uma base de código extensa, um IDE pode ajudá-lo a organizar seu código e navegar nele com facilidade. Além disso, as IDEs podem ajudá-lo a testar seu código e editá-lo de acordo.
Aqui estão as IDEs que funcionam bem com Golang.
Gogland
A empresa de desenvolvimento de software JetBrains lançou outra IDE confiável, mas desta vez, para Golang. Gogland é uma IDE comercial que oferece um ambiente robusto e ergonômico para desenvolvedores Go. Possui também assistência à codificação, depurador e um terminal integrado.
Porque uma empresa estabelecida criou o Gogland, ele tem um extenso ecossistema de plugins IntelliJ onde você pode obter ferramentas adicionais caso você precise de mais.
Visual Studio Code
Criado pela Microsoft, o Visual Studio Code é um IDE completo, de código aberto e editor de código que suporta uma grande variedade de linguagens de programação. Ele apresenta o completamento inteligente com IntelliSense; depuração usando pontos de interrupção, pilhas de chamadas e um console interativo; integração Git incorporada; e pasta hierárquica e explorador de arquivos.
Como outro IDE popular, o Visual Studio Code tem uma comunidade de desenvolvedores Go que contribuem regularmente. Com o Visual Studio Code, você pode estender as funcionalidades com o array de plugins disponíveis.
LiteIDE
LiteIDE está entre as primeiras IDEs de código aberto, centradas no Golang, criadas há mais de 5 anos. Como uma aplicação C++ Qt com uma aparência e toque únicos, LiteIDE oferece gerenciamento de código, comandos de compilação configuráveis, gdb e Delve debugger, auto-completamento e temas com WordApi, sistema baseado no tipo MIME, e muito mais. Ele também fornece suporte JSON e Golang.
Wide
Wide é um IDE baseado na web para programadores Golang. É projetado para o desenvolvimento colaborativo e funciona melhor para equipes e agências de desenvolvimento web. Amplas funcionalidades incluem destaque de código, depuração, integração Git e mais.
Porque Wide é criado e mantido por um desenvolvedor chinês, a maioria de sua documentação e suporte estão em chinês.
Atom com plugin go-plus
Se você já está usando Atom, sua experiência de edição de código em Golang pode ser melhorada com um pacote open-source chamado go-plus. Com o go-plus, você recebe feedback instantâneo e em tempo real sobre sua sintaxe e erros de compilação.
O pacote go-plus oferece quase todo o suporte do Golang no Atom. Ele também pode ser usado para ferramentas, fluxos de compilação, linters, vet e ferramentas de cobertura.
Go-plus também inclui vários trechos de código e recursos como autocompletar com gocode, formatação de código com gofmt, goreturns, ou goimports, e mais.
Eclipse com GoClipse
Porque o Eclipse é uma IDE muito popular, inúmeros plugins foram criados para ele. GoClipse é um plugin Eclipse para Golang que oferece edição de código fonte Go com destaque de sintaxe configurável e indentação e autocompletar com chaves.
GoClipse também serve como um assistente de projeto e construtor que relata a sintaxe e erros de compilação instantaneamente. Recursos adicionais do GoClipse incluem funcionalidade de depuração e ajuda de código.
Sublime Text com GoSublime
Sublime Text é outro editor de texto sofisticado com uma grande comunidade de colaboradores e desenvolvedores. Como tal, foi criada uma grande variedade de plugins para este IDE.
GoSublime é um plugin Golang para o Sublime Text 3 que oferece auto-completar código do Gocode, verificação de lint/syntax enquanto você está usando código de cabeamento, adição e remoção automática de importação de pacotes, e mais.
Vim com plugin vim-go
Vim é uma IDE livre e de código aberto que pode ser personalizada e configurada com vários plugins. Se você é um programador Golang, você pode usar o Vim com o plugin vim-go criado por Fatih Arslan. O Vim-go instala automaticamente todos os binários necessários para fornecer uma integração suave do Vim para Golang.
Vim-go é um poderoso conjunto de plugins para escrever e desenvolver o Go. Suas características incluem análise avançada de código fonte, adição e remoção de caminhos de importação, suporte a múltiplos 3rd liner, definição goto, rápidas execuções de arquivos e muito mais.
Vim-go é altamente customizável, com características individuais que podem ser habilitadas ou desabilitadas de acordo com sua necessidade.
Komodo
Komodo é uma IDE com todas as funcionalidades da linguagem Go que suporta outras linguagens de programação como Node.js, Python, Ruby, Perl, e muito mais. Com este IDE Go, você pode escrever código limpo facilmente. Seus recursos incluem um editor de código avançado, autocompletar código inteligente, verificação de sintaxe, controle de versão e teste de unidade, e um Go Code Intelligence que permite a navegação no código e dicas de código.
O ótimo do Komodo é que ele funciona muito bem para a colaboração em equipe, uma vez que vários desenvolvedores podem editar um documento simultaneamente. Komodo pode ser instalado no Mac, Windows ou Linux com apenas uma licença.
IntelliJ IDEA com Go Language (golang.org) Plugin de suporte a Go (Golang.org)
IntelliJ IDEA (mesma empresa que JetBrains) é um IDE que pode ser usado com Golang através do plugin de suporte a Go Language. Se você quiser usar o IntelliJ IDEA com Golang, você precisa instalar este plugin, embora com características limitadas ao contrário do Gogland.
>
Tools for Golang
Ferramentas para Golang podem ser usadas para uma grande variedade de projetos e aplicações web. Os desenvolvedores podem escrever código e construir aplicações tão rápida e facilmente quanto possível com estas ferramentas úteis.
Aqui está uma lista das principais ferramentas Golang para sua referência.
Apicompat
Apicompat é uma nova ferramenta de linguagem Go que ajuda os desenvolvedores a detectar alterações incompatíveis e declarações exportadas.
Com o Apicompat, você pode evitar falsos positivos. No entanto, nem todas as alterações incompatíveis ao contrário podem ser detectadas pelo Apicompat. Parâmetros de argumentos de troca e outras alterações ainda precisam ser considerados pelo autor da biblioteca.
Checkstyle
Inspirado pelo Java Checkstyle, Checkstyle for Golang imprime sugestões de estilo de codificação. Ele também permite que os desenvolvedores verifiquem linha/função de arquivo e número de linha/param, que podem então ser configurados pelo usuário.
Depth
Depth é outra ferramenta útil do Golang que ajuda os desenvolvedores web a recuperar e visualizar árvores de dependência de código fonte Go. Ele pode ser usado como uma aplicação autônoma de linha de comando ou como um pacote em particular dentro do seu próprio projeto. Você pode adicionar customizações simplesmente definindo as bandeiras apropriadas na árvore antes de resolver.
Go-Swagger
Este conjunto de ferramentas inclui uma grande variedade de características e funções. O Go-Swagger é uma implementação do Swagger 2.0, e pode serializar e deserializar as especificações do Swagger. É uma representação minimalista mas poderosa da sua API RESTful.
Com Go-Swagger, você pode swagger spec document, validar contra jsonschema, e outras regras extras. Outras características incluem geração de código, geração de API baseada em especificações swagger, geração de documento spec baseada no código, formatos de string estendidos, e mais.
Go Meta Linter
Se você precisar rodar as ferramentas Go lint e normalizar sua saída simultaneamente, é exatamente isso que o Go Meta Linter pode fazer por você. O Go Meta Linter destina-se a ser utilizado com um editor de texto ou uma integração IDE como o plugin Sublime Linter, o pacote Atom go-plus, o verificador Emacs Flychecker, o Vim/Neovim, e o Go for Visual Studio Code. Ele também suporta uma grande variedade de linters e arquivos de configuração como JSON.
Go-callvis
Go-callvis é uma ferramenta de desenvolvimento web que lhe permite visualizar o gráfico de chamada do seu programa Go com o formato de pontos do Graphviz. Esta ferramenta é especialmente útil para a construção de grandes projetos com bases de código complexas. Isto também é útil quando você quer entender a estrutura de código de outro desenvolvedor ou reconstruir o projeto de outra pessoa.
Com go-callvis, desenvolvedores podem focar pacotes específicos dentro de um programa; agrupar funções de acordo com o pacote e métodos de acordo com o tipo; e limitar pacotes a prefixos de caminho personalizados, e ignorar aqueles que os contêm.
Gonative
Gonative é uma ferramenta simples do Golang que permite construir cadeias de ferramentas Go com bibliotecas nativas, que podem ser compiladas cruzadas enquanto ainda utilizam as versões Cgo-enabled dos pacotes stdlib.
Gonative baixa as distribuições binárias de cada plataforma e copia suas bibliotecas para seus devidos lugares. Ao mesmo tempo, o Gonative define o tempo correto do mod para evitar reconstruções desnecessárias.
Felizmente, o Gonative permanece não testado no Windows. Adicionalmente, não há suporte a Linux/arm fornecido.
Grapes
Grapes é uma ferramenta Golang leve, projetada para distribuir comandos sobre ssh facilmente. É escrito e mantido ativamente por Yaron Sumel.
Grapes em breve suportará a validação completa da chave do host, então isso é algo que os desenvolvedores devem estar atentos.
Gosimple
A grande coisa sobre este linter Golang é que ele se concentra na simplificação do código fonte do Go. Gosimple tem sempre como alvo a última versão Go, por isso requer a versão Go 1.6 ou posterior.
Se houver uma nova versão Go, o gosimple irá sugerir os métodos mais fáceis e simples para evitar construções complicadas.
Go Vendor
Go Vendor é a ferramenta Golang que funciona com a pasta padrão do Vendor. Ela permite aos desenvolvedores copiar as dependências existentes de $GOPATH com o govendor add/update. Você também pode puxar diretamente novas dependências ou atualizar dependências existentes com govendor fetch e mover sistemas legados com govendor migrate.
Wrapping It Up
Se você está vindo de um background JS/Node, você precisa aprender alguns novos conceitos de programação como coroutines, canais, digitação estrita com compilação, interfaces, structs, ponteiros, e algumas outras diferenças. Mas, uma vez que você entre na ranhura, você vai achar Golang mais fácil e rápido de usar.