Golang Gids: A List of Top Golang Frameworks, IDEs & Tools
Sinds de introductie ervaart Google’s Go Programmeertaal (Golang) een toenemende populariteit onder mainstream gebruikers. In een enquête van december 2016 beweerde 89% van de 3.595 respondenten dat ze op het werk of buiten het werk programmeren in Go.
Daarnaast scoort Go het hoogst onder de programmeertalen in termen van expertise en voorkeur. Deze juli 2017, Go staat op de 10e plaats in Tiobe’s Programmeertaal van het Jaar, springen van zijn 55e ranking vorig jaar.
Het is duidelijk dat Go veel programmeurs uit verschillende disciplines en software-ontwikkeling outsourcing professionals aantrekt. En het is veilig om te zeggen dat dit te wijten is aan het gemak van het gebruik van Go.
Als een gecompileerde, open-source programmeertaal, maakt Go het gemakkelijk voor ontwikkelaars om eenvoudige, betrouwbare en efficiënte software te bouwen. Het is het product van de innovatie en evolutie van de meer conservatieve talen zoals C en C++.
Met Go is de hoeveelheid code typing verminderd en het schrijven van robuuste API’s zonder in te boeten op de prestaties is eenvoudiger geworden. Ontworpen voor schaalbaarheid en concurrency, maakt Go optimalisaties mogelijk. Een compiler kan al het code-inspectie werk voor runtime uitvoeren.
We hebben een lijst samengesteld van de top frameworks, IDEs, en tools voor Golang voor je snelle referentie. Maak er een bladwijzer van in je browser, zodat je altijd terug kunt komen als je met Go werkt!
Frameworks voor Golang
Web frameworks helpen ontwikkelaars om applicaties zo gemakkelijk en snel mogelijk te bouwen. Go is nog relatief nieuw, dus het is belangrijk om frameworks te gebruiken met voldoende documentatie.
Hier zijn 9 frameworks die u kunt gebruiken om u te helpen projecten te bouwen met behulp van de Go-taal.
Revel
Als een hoge productiviteit framework voor Go, bevat Revel een Hot Code Reload tool waarmee u uw project opnieuw kunt bouwen bij elke bestandswijziging. Het bevat ook een breed scala aan uitgebreide en krachtige functies, zodat u geen externe bibliotheken hoeft te vinden om in het framework te integreren.
Beego
Beego is een volwaardig MVC-framework met een eigen logboekbibliotheek, ORM en webframeworks. U hoeft geen bibliotheken van derden te zoeken en te installeren. Het beschikt over een ingebouwde tool genaamd Bee Tool die uitkijkt naar code veranderingen en taken uitvoert wanneer wijzigingen worden gedetecteerd.
Beego bespaart je een hoop uren, vooral in het begin van een project wanneer je het logging framework of de applicatiestructuur aan het uitzoeken bent.
Martini
Geïnspireerd door Sinatra, is Martini een extreem licht maar krachtig framework. Het is ontwikkeld voor het schrijven van modulaire webapplicaties en -diensten in Golang.
Het heeft een niet-intrusief ontwerp dat snel en gemakkelijk te gebruiken is en bevat een breed scala aan handlers en middleware. Het is in staat om basisrouting, exception handling en standaard document serving uit te voeren voor AngularJS-apps in HTML5-modus.
De beste eigenschap van Martini is het gebruik van reflectie, waarmee ontwikkelaars dynamisch gegevens kunnen invoegen in de handler-functies en nieuwe services kunnen toevoegen. Martini is ook volledig compatibel met de http.HandlerFunc-interface. Het nadeel is echter dat het Martini-framework niet meer wordt onderhouden.
Gin Gonic
Gin Gonic is een webframework met een martini-achtige API, maar met veel betere prestaties. Als je Martini eerder hebt gebruikt, dan zul je bekend zijn met Gin Gonic. Anders kost het je maar 10 minuten om Gin te leren. Zo eenvoudig is het!
Gin Gonic is een minimalistisch framework dat alleen de meest essentiële bibliotheken en functies bevat. Dit maakt het perfect voor het ontwikkelen van high-performance REST API’s. Plus, het is 40 keer sneller dan Martini.
U kunt middleware, geneste groepen, JSON validatie, en rendering toevoegen, maar het behoudt nog steeds zijn optimale prestaties. Gin Gonic maakt gebruik van httprouter, de snelste HTTP-router voor Go.
Buffalo
Het bouwen van nieuwe webapplicaties met Go is snel en eenvoudig met Buffalo. Als u aan een nieuw project begint, heeft Buffalo alles al voor u geregeld, van front-end tot back-end ontwikkeling.
Het beschikt over Hot Reloading, wat betekent dat dev commando automatisch naar uw .go en .html bestanden kijkt. Het zal dan uw binary voor u herbouwen en opnieuw opstarten. Voer gewoon het dev commando uit, en je ziet de veranderingen direct voor je ogen live gaan!
Buffalo is meer dan alleen een framework – het is een holistisch web-ontwikkelings eco-systeem waarmee je direct aan de slag kunt met het bouwen van je applicatie.
Goji
Goji is een lichtgewicht en snel web-framework dat composabiliteit en eenvoud als belangrijkste prioriteit heeft. Net als net/http.ServeMux is Goji een minimalistische HTTP-verzoekmultiplexer. Het bevat Einhorn ondersteuning, die het mogelijk maakt voor u om websocket ondersteuning in Goji te hebben.
Aanvullende functies omvatten URL patronen, herconfigureerbare middleware stack, graceful shutdown, en nog veel meer. Goji kan in productie worden gebruikt en heeft in verschillende organisaties miljarden verzoeken verwerkt.
Tiger Tonic
Geïnspireerd door Dropwizard, is Tiger Tonic een Go-framework voor het ontwikkelen van JSON-webservices en het bouwen van krachtige REST-API’s. Om trouw te blijven aan de principes van Golang, streeft Tiger Tonic ernaar om functies orthogonaal te houden.
De keerzijde van Tiger Tonic is zijn ontoereikendheid als het gaat om het bouwen van grote, back-end applicaties.
Gocraft
Een ander krachtig maar minimalistisch framework, Gocraft biedt snelle en schaalbare routingprestaties. Het voegt routing toe aan het net/http pakket uit de standaard bibliotheek.
Gocraft is een Go mux en middleware pakket dat casting en reflectie mogelijkheden bevat, zodat je je code statisch kunt typen. Je kunt ook een optionele functionaliteit toevoegen met de ingebouwde middleware of je eigen middleware schrijven.
Omdat performance altijd een van de grootste zorgen is voor ontwikkelaars, is Gocraft een geweldige keuze voor ontwikkelaars. Het is heel eenvoudig om backend webapplicaties te schrijven met het Gocraft framework.
Mango
Hoewel Mango niet meer actief wordt onderhouden door de maker, Paul Bellamy, gebruiken veel Go-gebruikers het nog steeds. Het mooie van Mango is de modulariteit. U kunt kiezen uit een groot aantal bibliotheken om in uw project op te nemen.
Mango laat u zo snel en gemakkelijk mogelijk herbruikbare modules van HTTP-functionaliteit bouwen. Het compileert een lijst van middleware en toepassing in een enkel http-server object om uw code self-contained te houden.
Integrated Development Environment (IDE’s) voor Golang
IDE’s voor Golang winnen aan populariteit, samen met de Go-taal. Hoewel veel ontwikkelaars nog steeds de voorkeur geven aan tekst editors, geven velen ook de voorkeur aan IDE’s.
Als je werkt aan een grootschalig project met een uitgebreide codebase, kan een IDE je helpen je code te organiseren en er met gemak doorheen te navigeren. Bovendien kunnen IDE’s u helpen uw code te testen en dienovereenkomstig te bewerken.
Hier zijn de top IDE’s die geweldig werken met Golang.
Gogland
Softwareontwikkelingsbedrijf JetBrains heeft nog een betrouwbare IDE uitgebracht, maar deze keer, voor Golang. Gogland is een commerciële IDE die een robuuste ergonomische omgeving biedt voor Go ontwikkelaars. Het beschikt ook over codering hulp, debugger, en een geïntegreerde terminal.
Omdat Gogland door een gevestigd bedrijf is gemaakt, heeft het een uitgebreid IntelliJ plugin ecosysteem waar je extra tools kunt krijgen als je meer nodig hebt.
Visual Studio Code
Creatie door Microsoft, Visual Studio Code is een volledig uitgeruste, open-source IDE en code editor die een breed scala aan programmeertalen ondersteunt. Het beschikt over slimme voltooiing met IntelliSense, debugging met behulp van breekpunten, call stacks, en een interactieve console, ingebouwde Git integratie, en hiërarchische map en bestand explorer.
Als een andere populaire IDE, heeft Visual Studio Code een ondersteunende gemeenschap van Go-ontwikkelaars die regelmatig bijdragen leveren. Met Visual Studio Code kunt u de functionaliteiten uitbreiden met een reeks beschikbare plug-ins.
LiteIDE
LiteIDE is een van de eerste Golang-centrische, open-source IDE’s die meer dan vijf jaar geleden werd gemaakt. Als een C++ Qt applicatie met een unieke look en feel, LiteIDE biedt code management, configureerbare build commando’s, gdb en Delve debugger, auto-completion en theming met WordApi, MIME type gebaseerd systeem, en meer. Het biedt ook ondersteuning voor JSON en Golang.
Wide
Wide is een webgebaseerde IDE voor Golang-programmeurs. Het is ontworpen voor collaboratieve ontwikkeling en werkt het beste voor teams en web development bureaus. De Wide-functies omvatten code highlighting, debugging, Git-integratie en meer.
Omdat Wide is gemaakt en wordt onderhouden door een Chinese ontwikkelaar, zijn de meeste documentatie en ondersteuning in het Chinees.
Atom met go-plus plugin
Als u Atom al gebruikt, kan uw ervaring met het bewerken van code in Golang worden verbeterd met een open-source pakket genaamd go-plus. Met go-plus krijg je directe, real-time feedback over je syntaxis en bouwfouten.
Het go-plus pakket biedt bijna alle Golang ondersteuning in Atom. Het kan ook worden gebruikt voor tools, build flows, linters, vet en coverage tools.
Go-plus bevat ook diverse code snippets en functies zoals autocomplete met gocode, code formatting met gofmt, goreturns, of goimports, en meer.
Eclipse met GoClipse
Omdat Eclipse een wijdverbreide populaire IDE is, zijn er talloze plugins voor gemaakt. GoClipse is een Eclipse plugin voor Golang die Go broncode editing biedt met configureerbare syntax highlighting en automatische inspringing en accolade completering.
GoClipse dient ook als een project wizard en bouwer die syntax en bouw fouten direct rapporteert. Extra functies van GoClipse zijn onder andere debugging-functionaliteit en code assist.
Sublime Text met GoSublime
Sublime Text is een andere geavanceerde teksteditor met een grote gemeenschap van bijdragers en ontwikkelaars. Als zodanig is er een grote verscheidenheid aan plugins gemaakt voor deze IDE.
GoSublime is een Golang plugin voor Sublime Text 3 die code completering biedt vanuit Gocode, lint/syntax controle terwijl je code bedraadt, automatische toevoeging en verwijdering van package imports, en meer.
Vim met vim-go plugin
Vim is een gratis, open-source IDE die kan worden aangepast en geconfigureerd met verschillende plugins. Als je een Golang programmeur bent, kun je Vim gebruiken met de vim-go plugin gemaakt door Fatih Arslan. Vim-go installeert automatisch alle benodigde binaries voor een soepele Vim integratie voor Golang.
Vim-go is een krachtige plugin suite voor het schrijven en ontwikkelen van Go. De functies omvatten geavanceerde broncode analyse, toevoegen en verwijderen van import paden, meerdere 3rd liner ondersteuning, goto-definitie, snelle file executions, en nog veel meer.
Vim-go is zeer aanpasbaar, met individuele functies die kunnen worden in- of uitgeschakeld op basis van uw behoefte.
Komodo
Komodo is een volledig uitgeruste Go-taal IDE die ook andere programmeertalen ondersteunt, zoals Node.js, Python, Ruby, Perl, en meer. Met deze Go IDE, kunt u gemakkelijk schone code schrijven. De functies omvatten een geavanceerde code-editor, intelligente code completering, syntax controle, versiebeheer en unit testing, en een Go Code Intelligence die code browsing en code hinting mogelijk maakt.
Het mooie van Komodo is dat het geweldig werkt voor teamsamenwerking, omdat meerdere ontwikkelaars tegelijkertijd een document kunnen bewerken. Komodo kan worden geïnstalleerd op Mac, Windows of Linux met slechts één licentie.
IntelliJ IDEA met Go Language (golang.org) Support Plugin
IntelliJ IDEA (hetzelfde bedrijf als JetBrains) is een IDE die kan worden gebruikt met Golang via de Go language support plugin. Als je IntelliJ IDEA met Golang wilt gebruiken, moet je deze plugin installeren, zij het met beperkte mogelijkheden in tegenstelling tot Gogland.
Tools voor Golang
Golang tools kunnen gebruikt worden voor een grote verscheidenheid aan projecten en web applicaties. Ontwikkelaars kunnen code schrijven en applicaties zo snel en gemakkelijk mogelijk bouwen met deze handige tools.
Hier is een lijst van de top Golang tools voor uw referentie.
Apicompat
Apicompat is een nieuwe Go taal tool die ontwikkelaars helpt achterwaartse, incompatibele veranderingen en geëxporteerde declaraties te detecteren.
Met Apicompat kunt u valse positieven voorkomen. Niet elke achterwaarts incompatibele wijziging kan echter door Apicompat worden gedetecteerd. Het verwisselen van argumentparameters en andere wijzigingen moeten nog steeds worden overwogen door de auteur van de bibliotheek.
Checkstyle
Geïnspireerd door Java Checkstyle, geeft Checkstyle voor Golang suggesties voor de coderingsstijl. Het laat ontwikkelaars ook regel/functie en regel/param-nummer van bestanden controleren, die vervolgens door de gebruiker kunnen worden geconfigureerd.
Depth
Depth is een ander nuttig Golang-hulpprogramma dat webontwikkelaars helpt om afhankelijkheidsbomen van de Go-broncode op te halen en te visualiseren. Het kan worden gebruikt als een standalone command-line applicatie of als een bepaald pakket binnen je eigen project. U kunt aanpassingen toevoegen door eenvoudig de juiste vlaggen op de boom in te stellen voordat u resolveert.
Go-Swagger
Deze toolkit bevat een breed scala aan mogelijkheden en functies. Go-Swagger is een implementatie van Swagger 2.0, en kan swagger-specificaties serialiseren en deserialiseren. Het is een minimalistische maar krachtige weergave van uw RESTful API.
Met Go-Swagger, kunt u swagger spec document, valideren tegen jsonschema, en andere extra regels. Andere functies zijn code generatie, API generatie op basis van swagger specs, spec document generatie op basis van de code, uitgebreide string formaten, en nog veel meer.
Go Meta Linter
Als je Go lint tools moet draaien en hun output gelijktijdig moet normaliseren, dan is dat precies wat Go Meta Linter voor je kan doen. Go Meta Linter is bedoeld om te worden gebruikt met een tekst editor of een IDE integratie zoals Sublime Linter plugin, Atom go-plus package, Emacs Flycheck checker, Vim/Neovim, en Go for Visual Studio Code. Het ondersteunt ook een grote verscheidenheid aan linters en configuratiebestanden zoals JSON.
Go-callvis
Go-callvis is een web-ontwikkeltool waarmee u de aanroepgrafiek van uw Go-programma kunt visualiseren met Graphviz’s dot-formaat. Deze tool is vooral nuttig bij het bouwen van grote projecten met complexe codebases. Dit is ook handig wanneer u de codestructuur van een andere ontwikkelaar wilt begrijpen of het project van iemand anders wilt herbouwen.
Met go-callvis kunnen ontwikkelaars zich richten op specifieke pakketten binnen een programma; functies groeperen op basis van pakket en methoden op basis van type; en pakketten beperken tot aangepaste padvoorvoegsels, en de pakketten negeren die deze voorvoegsels bevatten.
Gonative
Gonative is een eenvoudige Golang-tool waarmee je Go-toolchains kunt bouwen met native libs, die cross-compileerbaar zijn terwijl je toch gebruik kunt maken van de Cgo-versies van de stdlib-pakketten.
Gonative download de binaire distributies voor elk platform en kopieert hun bibliotheken naar de juiste plaatsen. Tegelijkertijd stelt Gonative de juiste mod tijd in om onnodige rebuilds te voorkomen.
Ongelukkigerwijs is Gonative nog niet getest op Windows. Bovendien is er geen ondersteuning voor Linux/arm.
Grapes
Grapes is een lichtgewicht Golang-tool, ontworpen om eenvoudig commando’s via ssh te distribueren. Het is geschreven en wordt actief onderhouden door Yaron Sumel.
Grapes zal binnenkort volledige host key validatie ondersteunen, dus dat is iets waar ontwikkelaars op moeten letten.
Gosimple
Het mooie van deze Golang linter is dat het zich richt op het vereenvoudigen van Go broncode. Gosimple richt zich altijd op de laatste Go versie, dus het vereist Go versie 1.6 of hoger.
Als er een nieuwe Go-release is, zal gosimple de gemakkelijkste en eenvoudigste methoden voorstellen om ingewikkelde constructies te vermijden.
Go Vendor
Go Vendor is het Golang-hulpprogramma dat werkt met de standaard Vendor-map. Het stelt ontwikkelaars in staat om bestaande dependencies te kopiëren van $GOPATH met govendor add/update. Je kunt ook direct nieuwe dependencies ophalen of bestaande dependencies updaten met govendor fetch en legacy systemen verplaatsen met govendor migrate.
Wrapping It Up
Als je van een JS/Node achtergrond komt, moet je wat nieuwe programmeerconcepten leren zoals coroutines, channels, strict typing met compilation, interfaces, structs, pointers, en nog wat andere verschillen. Maar, als je eenmaal in de groef zit, zul je Golang makkelijker en sneller in gebruik vinden.