Golang-guide: En lista över de bästa ramverken, IDE:erna och verktygen för Golang

Sedan introduktionen har Googles Go-programmeringsspråk (Golang) upplevt en ökande popularitet bland vanliga användare. I en undersökning från december 2016 hävdade 89 % av de 3 595 respondenterna att de programmerar i Go på jobbet eller utanför jobbet.

Och dessutom rankas Go högst bland programmeringsspråken när det gäller expertis och preferenser. I juli 2017 rankas Go på tionde plats i Tiobe’s Programming Language of the Year, vilket är ett hopp från 55:e plats förra året.

Det är tydligt att Go lockar många programmerare från olika discipliner och yrkesverksamma inom outsourcing av mjukvaruutveckling. Och det är säkert att säga att detta beror på hur lätt det är att använda Go.

Som ett kompilerat programmeringsspråk med öppen källkod gör Go det enkelt för utvecklare att bygga enkel, tillförlitlig och effektiv programvara. Det är en produkt av innovation och utveckling av de mer konservativa språken som C och C++.

Med Go har mängden kodtypning minskat och det har blivit lättare att skriva robusta API:er utan att offra dess prestanda. Go är utformat för skalbarhet och samtidighet och gör optimeringar möjliga. En kompilator kan utföra allt kodinspektionsarbete före körning.

Vi har sammanställt en lista över de bästa ramverken, IDE:erna och verktygen för Golang för din snabbreferens. Lägg den som bokmärke i din webbläsare så att du kan komma tillbaka när du arbetar med Go!

Frameworks för Golang

Webbuframeworks hjälper utvecklare att bygga applikationer så enkelt och snabbt som möjligt. Go är fortfarande relativt nytt, så det är viktigt att använda ramverk med tillräcklig dokumentation.

Här är 9 ramverk som du kan använda för att hjälpa dig att bygga projekt med Go-språket.

Revel

Som ett ramverk med hög produktivitet för Go innehåller Revel ett Hot Code Reload-verktyg som gör att du kan bygga om ditt projekt vid varje filändring. Det innehåller också ett stort antal omfattande och högpresterande funktioner, så att du inte behöver hitta externa bibliotek att integrera i ramverket.

Beego

Beego är ett fullfjädrad MVC-ramverk med ett eget loggningsbibliotek, ORM och webbramverk. Du behöver inte hitta och installera bibliotek från tredje part. Det har ett inbyggt verktyg som heter Bee Tool som håller utkik efter kodändringar och kör uppgifter när ändringar upptäcks.

Beego sparar dig många timmar, särskilt i början av ett projekt när du ska ta reda på loggningsramverket eller programstrukturen.

Martini

Inspirerad av Sinatra är Martini ett extremt lätt men kraftfullt ramverk. Det utvecklades för att skriva modulära webbapplikationer och tjänster i Golang.

Det har en icke-intrusiv design som är snabb och enkel att använda och innehåller ett brett utbud av handlers och middleware. Den kan utföra grundläggande routning, undantagshantering och servering av standarddokument för AngularJS-appar i HTML5-läge.

Martinis bästa egenskap är användningen av reflektion, vilket gör det möjligt för utvecklare att dynamiskt infoga data i handlingsfunktionerna och lägga till nya tjänster. Martini är också helt kompatibel med gränssnittet http.HandlerFunc. Nackdelen är dock att Martini-ramverket inte längre underhålls.

Gin Gonic

Gin Gonic är ett webbramverk med ett Martini-liknande API, men med mycket bättre prestanda. Om du har använt Martini tidigare kommer du att vara bekant med Gin Gonic. Annars tar det bara 10 minuter för dig att lära dig Gin. Så enkelt är det!

Gin Gonic är ett minimalistiskt ramverk som endast innehåller de mest väsentliga biblioteken och funktionerna. Detta gör det perfekt för att utveckla högpresterande REST API:er. Dessutom är det 40 gånger snabbare än Martini.

Du kan lägga till middleware, nested groups, JSON-validering och rendering, men det behåller ändå sin optimala prestanda. Gin Gonic använder httprouter, den snabbaste HTTP-routern för Go.

Buffalo

Att bygga nya webbapplikationer med Go är snabbt och enkelt med Buffalo. När du startar ett nytt projekt har Buffalo redan allting inställt för dig – från front-end till back-end-utveckling.

Det har Hot Reloading, vilket innebär att dev-kommandot bevakar dina .go- och .html-filer automatiskt. Det kommer sedan att bygga om och starta om din binärfil åt dig. Kör bara dev-kommandot och du kommer att se ändringarna gå live precis framför dina ögon!

Buffalo är mer än bara ett ramverk – det är ett holistiskt ekosystem för webbutveckling som gör att du kan börja bygga din applikation direkt.

Goji

Goji är ett lättviktigt och snabbt ramverk för webbutveckling som har kompositering och enkelhet som sin främsta prioritet. I likhet med net/http.ServeMux är Goji en minimalistisk HTTP-förfrågningsmultiplexer. Den innehåller Einhorn-stöd, vilket gör det möjligt för dig att ha websocket-stöd i Goji.

Tillkommande funktioner inkluderar URL-mönster, omkonfigurerbar middleware-stack, graciös avstängning med mera. Goji kan användas i produktion och har betjänat miljarder förfrågningar i flera organisationer.

Tiger Tonic

Inspirerad av Dropwizard är Tiger Tonic ett Go-ramverk för utveckling av JSON-webbtjänster och för att bygga högpresterande REST-API:er. För att vara trogen Golangs principer strävar Tiger Tonic efter att hålla funktionerna ortogonala.

Nackdelen med Tiger Tonic är dess otillräcklighet när det gäller att bygga stora backend-applikationer.

Gocraft

Gocraft är ett annat kraftfullt men minimalistiskt ramverk, som erbjuder snabb och skalbar routingprestanda. Det lägger till routing till net/http-paketet från standardbiblioteket.

Gocraft är ett Go mux- och middleware-paket som har casting- och reflection-funktioner så att du kan skriva din kod statiskt. Du kan också lägga till en valfri funktionalitet med den inbyggda middleware eller skriva din egen.

Med tanke på att prestanda alltid är en av de viktigaste frågorna för utvecklare är Gocraft ett utmärkt val för utvecklare. Det är mycket enkelt att skriva backend-webbprogram med hjälp av Gocraft-ramverket.

Mango

Och även om Mango inte underhålls aktivt av sin skapare, Paul Bellamy, är det många Go-användare som fortfarande använder det. Det fina med Mango är dess modularitet. Du kan välja mellan en mängd olika bibliotek att inkludera i ditt projekt.

Mango låter dig bygga återanvändbara moduler av HTTP-funktionalitet så snabbt och enkelt som möjligt. Den kompilerar en lista med middleware och program till ett enda http-serverobjekt för att hålla din kod självständig.

Integrerade utvecklingsmiljöer (IDE) för Golang

IDEs för Golang ökar i popularitet, tillsammans med Go-språket. Även om många utvecklare fortfarande föredrar att använda textredigerare är det många som föredrar att använda IDE:er också.

Om du arbetar med ett storskaligt projekt med en omfattande kodbas kan en IDE hjälpa dig att organisera din kod och navigera i den med lätthet. Dessutom kan IDE hjälpa dig att testa din kod och redigera den därefter.

Här är de bästa IDE:erna som fungerar utmärkt med Golang.

Gogland

Mjukvaruutvecklingsföretaget JetBrains har släppt ytterligare ett pålitligt IDE, men den här gången för Golang. Gogland är ett kommersiellt IDE som ger en robust ergonomisk miljö för Go-utvecklare. Det har också kodningshjälp, felsökare och en integrerad terminal.

Eftersom ett etablerat företag skapade Gogland har det ett omfattande IntelliJ-plugin-ekosystem där du kan få ytterligare verktyg om du skulle behöva mer.

Visual Studio Code

Skapat av Microsoft är Visual Studio Code ett fullfjädrad IDE och kodredigerare med öppen källkod som har stöd för ett stort antal olika programmeringsspråk. Det har smart komplettering med IntelliSense, felsökning med hjälp av brytpunkter, anropstackar och en interaktiv konsol, inbyggd Git-integration samt hierarkisk mapp- och filutforskare.

Som ett annat populärt IDE har Visual Studio Code en stödjande gemenskap av Go-utvecklare som regelbundet bidrar. Med Visual Studio Code kan du utöka funktionerna med den mängd tillgängliga plugins.

LiteIDE

LiteIDE är ett av de första Golang-centrerade IDE:erna med öppen källkod som skapades för mer än fem år sedan. Som en C++ Qt-applikation med ett unikt utseende erbjuder LiteIDE kodhantering, konfigurerbara byggkommandon, gdb- och Delve-debugger, automatisk komplettering och tematisering med WordApi, MIME-typbaserat system och mycket mer. Det ger också stöd för JSON och Golang.

Wide

Wide är ett webbaserat IDE för Golang-programmerare. Det är utformat för samarbetsutveckling och fungerar bäst för team och byråer för webbutveckling. Wide har bland annat funktioner som kodmarkering, felsökning, Git-integration och mycket mer.

Då Wide skapas och underhålls av en kinesisk utvecklare är det mesta av dokumentationen och supporten på kinesiska.

Atom med go-plus-plugin

Om du redan använder Atom kan din kodredigeringsupplevelse i Golang förbättras med ett paket med öppen källkod som heter go-plus. Med go-plus får du omedelbar feedback i realtid på dina syntax- och byggfel.

Paketet go-plus erbjuder nästan allt stöd för Golang i Atom. Det kan också användas för verktyg, byggflöden, linters, vet- och täckningsverktyg.

Go-plus innehåller också olika kodutdrag och funktioner som autokomplettering med gocode, kodformatering med gofmt, goreturns eller goimports med mera.

Eclipse med GoClipse

Om Eclipse är ett mycket populärt IDE har många plugins skapats för det. GoClipse är ett Eclipse-plugin för Golang som erbjuder redigering av Go-källkod med konfigurerbar syntaxmarkering och automatisk indragning och komplettering av parenteser.

GoClipse fungerar också som en projektguide och byggare som rapporterar syntax- och byggfel direkt. Ytterligare funktioner i GoClipse inkluderar felsökningsfunktionalitet och kodassistans.

Sublime Text with GoSublime

Sublime Text är en annan sofistikerad textredigerare med en stor gemenskap av bidragsgivare och utvecklare. Därför har det skapats en mängd olika plugins för denna IDE.

GoSublime är ett Golang-plugin för Sublime Text 3 som erbjuder kodkomplettering från Gocode, lint/syntaxkontroll medan du skriver kod, automatisk tillägg och borttagning av paketimport med mera.

Vim med vim-go plugin

Vim är ett gratis IDE med öppen källkod som kan anpassas och konfigureras med olika plugins. Om du är Golang-programmerare kan du använda Vim med vim-go-pluginet som skapats av Fatih Arslan. Vim-go installerar automatiskt alla nödvändiga binärer för att ge en smidig Vim-integration för Golang.

Vim-go är en kraftfull plugin-svit för att skriva och utveckla Go. Dess funktioner inkluderar avancerad analys av källkod, lägga till och ta bort importvägar, stöd för flera 3rd liner, goto-definition, snabba filkörningar och mycket mer.

Vim-go är mycket anpassningsbar, med individuella funktioner som kan aktiveras eller inaktiveras enligt dina behov.

Komodo

Komodo är en fullfjädrad IDE för Go-språket med stöd för andra programmeringsspråk som Node.js, Python, Ruby, Perl med mera. Med detta Go IDE kan du enkelt skriva ren kod. Dess funktioner inkluderar en avancerad kodredigerare, intelligent kodkomplettering, syntaxkontroll, versionskontroll och enhetstestning samt en Go Code Intelligence som tillåter kodbläddring och kodtips.

Det fina med Komodo är att det fungerar utmärkt för teamsamarbete eftersom flera utvecklare kan redigera ett dokument samtidigt. Komodo kan installeras på Mac, Windows eller Linux med bara en licens.

IntelliJ IDEA with Go Language (golang.org) Support Plugin

IntelliJ IDEA (samma företag som JetBrains) är ett IDE som kan användas tillsammans med Golang genom plugin för stöd för språket Go. Om du vill använda IntelliJ IDEA med Golang måste du installera detta plugin, om än med begränsade funktioner till skillnad från Gogland.

Verktyg för Golang

Verktyg för Golang kan användas för en mängd olika projekt och webbapplikationer. Utvecklare kan skriva kod och bygga applikationer så snabbt och enkelt som möjligt med dessa hjälpsamma verktyg.

Här finns en lista över de bästa Golang-verktygen som referens.

Apicompat

Apicompat är ett nytt Go-språkverktyg som hjälper utvecklare att upptäcka bakåtsträvande, inkompatibla ändringar och exporterade deklarationer.

Med Apicompat kan du undvika falska positiva resultat. Det är dock inte alla bakåtkompatibla ändringar som kan upptäckas av Apicompat. Byte av argumentparametrar och andra ändringar måste fortfarande beaktas av biblioteksförfattaren.

Checkstyle

Inspirerad av Java Checkstyle skriver Checkstyle för Golang ut förslag till kodningsstil. Det låter också utvecklare kontrollera filens rad/funktion och rad/param-nummer, som sedan kan konfigureras av användaren.

Depth

Depth är ett annat användbart Golang-verktyg som hjälper webbutvecklare att hämta och visualisera Go-källkodens beroendeträd. Det kan användas som ett fristående kommandoradsprogram eller som ett särskilt paket i ditt eget projekt. Du kan lägga till anpassningar genom att helt enkelt ställa in lämpliga flaggor på trädet innan du löser upp det.

Go-Swagger

Den här verktygslådan innehåller ett stort antal olika egenskaper och funktioner. Go-Swagger är en implementering av Swagger 2.0 och kan serialisera och deserialisera Swagger-specifikationer. Det är en minimalistisk men ändå kraftfull representation av ditt RESTful API.

Med Go-Swagger kan du swagger spec dokument, validera mot jsonschema och andra extra regler. Andra funktioner inkluderar kodgenerering, API-generering baserat på swagger-specifikationer, generering av specifikationsdokument baserat på koden, utökade strängformat med mera.

Go Meta Linter

Om du behöver köra Go lint-verktyg och normalisera deras utdata samtidigt är det precis vad Go Meta Linter kan göra för dig. Go Meta Linter är avsedd att användas med en textredigerare eller en IDE-integration såsom Sublime Linter plugin, Atom go-plus package, Emacs Flycheck checker, Vim/Neovim och Go for Visual Studio Code. Den har också stöd för en mängd olika linters och konfigurationsfiler som JSON.

Go-callvis

Go-callvis är ett webbutvecklingsverktyg som gör det möjligt att visualisera anropsdiagrammet för ditt Go-program med Graphviz punktformat. Det här verktyget är särskilt användbart när du bygger stora projekt med komplexa kodbaser. Det är också användbart när du vill förstå en annan utvecklares kodstruktur eller bygga om någon annans projekt.

Med go-callvis kan utvecklare fokusera specifika paket inom ett program; gruppera funktioner enligt paket och metoder enligt typ; och begränsa paket till anpassade sökvägsprefix och ignorera dem som innehåller dem.

Gonative

Gonative är ett enkelt Golang-verktyg som låter dig bygga Go-verktygskedjor med inhemska libs, som kan korskompileras samtidigt som de Cgo-aktiverade versionerna av stdlib-paketen används.

Gonative hämtar de binära distributionerna för varje plattform och kopierar deras bibliotek till rätt plats. Samtidigt ställer Gonative in rätt mod-tid för att undvika onödiga ombyggnader.

Olyckligtvis är Gonative fortfarande otestad på Windows. Dessutom tillhandahålls inget stöd för Linux/arm.

Grapes

Grapes är ett lättviktigt Golang-verktyg som är utformat för att enkelt distribuera kommandon över ssh. Det skrivs och underhålls aktivt av Yaron Sumel.

Grapes kommer snart att ha stöd för fullständig validering av värdnycklar, så det är något som utvecklare bör hålla utkik efter.

Gosimple

Det fina med denna Golang-linter är att den fokuserar på att förenkla Go-källkoden. Gosimple är alltid inriktad på den senaste Go-versionen, så den kräver Go version 1.6 eller senare.

Om det finns en ny Go-version kommer gosimple att föreslå de enklaste och enklaste metoderna för att undvika komplicerade konstruktioner.

Go Vendor

Go Vendor är Golang-verktyget som fungerar med standardmappen Vendor. Det gör det möjligt för utvecklare att kopiera befintliga beroenden från $GOPATH med govendor add/update. Du kan också direkt hämta nya beroenden eller uppdatera befintliga beroenden med govendor fetch och flytta äldre system med govendor migrate.

Wrapping It Up

Om du kommer från en JS/Node-bakgrund måste du lära dig en del nya programmeringsbegrepp, till exempel coroutiner, kanaler, strikt typning med kompilering, gränssnitt, structs, pointers och en del andra skillnader. Men när du väl har kommit in i det kommer du att tycka att Golang är enklare och snabbare att använda.

Lämna ett svar

Din e-postadress kommer inte publiceras.