Golang-guide: En liste over de bedste Golang-rammer, IDE’er og værktøjer

Siden introduktionen har Googles programmeringssprog Go (Golang) oplevet en stigende popularitet blandt almindelige brugere. I en undersøgelse fra december 2016 hævdede 89 % af de 3.595 respondenter i december 2016, at de programmerer i Go på arbejdet eller uden for arbejdet.

Dertil kommer, at Go rangerer højest blandt programmeringssprog med hensyn til ekspertise og præferencer. I juli 2017 rangerer Go på 10. pladsen i Tiobe’s Programming Language of the Year, hvilket er et spring fra en 55. plads sidste år.

Det er tydeligt, at Go tiltrækker mange programmører fra forskellige discipliner og fagfolk inden for outsourcing af softwareudvikling. Og det er sikkert at sige, at det skyldes, at det er nemt at bruge Go.

Som et kompileret programmeringssprog med åben kildekode gør Go det nemt for udviklere at bygge enkel, pålidelig og effektiv software. Det er et produkt af innovationen og udviklingen af de mere konservative sprog som C og C++.

Med Go er mængden af kodetypering reduceret, og det er blevet lettere at skrive robuste API’er uden at gå på kompromis med ydelsen. Go er designet med henblik på skalerbarhed og samtidighed og gør optimeringer mulige. En compiler kan udføre alt kodeinspektionsarbejde før runtime.

Vi har samlet en liste over de bedste frameworks, IDE’er og værktøjer til Golang til hurtig reference. Sæt den som bogmærke i din browser, så du kan vende tilbage, når du arbejder med Go!

Frameworks til Golang

Webframeworks hjælper udviklere med at bygge applikationer så nemt og hurtigt som muligt. Go er stadig relativt nyt, så det er vigtigt at bruge frameworks med tilstrækkelig dokumentation.

Her er 9 frameworks, du kan bruge til at hjælpe dig med at opbygge projekter med Go-sproget.

Revel

Som en ramme med høj produktivitet til Go indeholder Revel et Hot Code Reload-værktøj, der lader dig genopbygge dit projekt ved hver filændring. Det indeholder også en lang række omfattende og højtydende funktioner, så du ikke behøver at finde eksterne biblioteker til at integrere i rammen.

Beego

Beego er en fuldgyldig MVC-ramme med sit eget logbibliotek, ORM og webrammer. Du behøver ikke at finde og installere biblioteker fra tredjeparter. Det har et indbygget værktøj kaldet Bee Tool, der holder øje med kodeændringer og kører opgaver, når der registreres ændringer.

Beego sparer dig for mange timer, især i begyndelsen af et projekt, når du skal finde ud af logningsrammen eller programstrukturen.

Martini

Inspireret af Sinatra er Martini en ekstremt let, men kraftfuld ramme. Den blev udviklet til at skrive modulære webapplikationer og tjenester i Golang.

Det har et ikke-intrusivt design, der er hurtigt og nemt at bruge, og det indeholder en bred vifte af handlere og middleware. Den er i stand til at udføre grundlæggende routing, undtagelseshåndtering og standarddokumentservering for AngularJS-apps i HTML5-tilstand.

Martinis bedste egenskab er dens brug af refleksion, som gør det muligt for udviklere at indsætte data dynamisk i handlerfunktionerne og tilføje nye tjenester. Martini er også fuldt kompatibel med grænsefladen http.HandlerFunc. Ulempen er dog, at Martini-rammen ikke længere vedligeholdes.

Gin Gonic

Gin Gonic er en webramme med et Martini-lignende API, men med langt bedre ydeevne. Hvis du har brugt Martini før, så vil du være bekendt med Gin Gonic. Ellers vil det kun tage dig 10 minutter at lære Gin. Så let er det!

Gin Gonic er en minimalistisk ramme, der kun indeholder de mest essentielle biblioteker og funktioner. Det gør det perfekt til udvikling af højtydende REST-API’er. Desuden er det 40 gange hurtigere end Martini.

Du kan tilføje middleware, nested groups, JSON-validering og rendering, men det bevarer stadig sin optimale ydeevne. Gin Gonic bruger httprouter, den hurtigste HTTP-router til Go.

Buffalo

Det er hurtigt og enkelt at opbygge nye webapplikationer med Go med Buffalo. Når du starter et nyt projekt, har Buffalo allerede alt konfigureret for dig – fra front-end til back-end-udvikling.

Det har Hot Reloading, hvilket betyder, at dev command automatisk overvåger dine .go- og .html-filer. Den vil derefter genopbygge og genstarte din binære fil for dig. Du skal blot køre dev-kommandoen, og du vil se ændringerne gå live lige foran dine øjne!

Buffalo er mere end blot et framework – det er et holistisk økosystem til webudvikling, der lader dig komme direkte i gang med at bygge din applikation.

Goji

Goji er et let og hurtigt webframework, der har komposérbarhed og enkelhed som sin hovedprioritet. Meget ligesom net/http.ServeMux er Goji en minimalistisk HTTP-forespørgselsmultiplexer. Den indeholder Einhorn-understøttelse, hvilket gør det muligt for dig at have websocket-understøttelse i Goji.

Den indeholder yderligere funktioner som URL-mønstre, rekonfigurerbar middlewarestak, graceful shutdown og meget mere. Goji kan bruges i produktion og har tjent milliarder af anmodninger på tværs af flere organisationer.

Tiger Tonic

Inspireret af Dropwizard er Tiger Tonic en Go-ramme til udvikling af JSON-webservices og opbygning af højtydende REST-API’er. For at forblive tro mod principperne i Golang bestræber Tiger Tonic sig på at holde funktionerne ortogonale.

Den negative side af Tiger Tonic er dens utilstrækkelighed, når det drejer sig om at bygge store backend-programmer.

Gocraft

Gocraft er en anden kraftfuld, men minimalistisk ramme og tilbyder hurtig og skalerbar routing-ydelse. Den tilføjer routing til net/http-pakken fra standardbiblioteket.

Gocraft er en Go-mux- og middleware-pakke, der indeholder casting- og refleksionsfunktioner, så du kan skrive din kode statisk. Du kan også tilføje en valgfri funktionalitet med den indbyggede middleware eller skrive din egen.

Da ydeevne altid er en af de største bekymringer for udviklere, er Gocraft et godt valg for udviklere. Det er meget nemt at skrive backend-webapplikationer ved hjælp af Gocraft-rammen.

Mango

Selv om Mango ikke vedligeholdes aktivt af skaberen, Paul Bellamy, bruger mange Go-brugere det stadig. Det gode ved Mango er dets modularitet. Du kan vælge mellem en række biblioteker, som du kan inkludere i dit projekt.

Mango giver dig mulighed for at opbygge genanvendelige moduler af HTTP-funktionalitet så hurtigt og nemt som muligt. Den kompilerer en liste over middleware og applikation til et enkelt http-serverobjekt for at holde din kode selvstændig.

Integrated Development Environment (IDE’er) til Golang

IDE’er til Golang vinder stadig større popularitet, sammen med Go-sproget. Mens mange udviklere stadig foretrækker at bruge tekstredigeringsprogrammer, er der også mange, der foretrækker at bruge IDE’er.

Hvis du arbejder på et storstilet projekt med en omfattende kodebase, kan en IDE hjælpe dig med at organisere din kode og navigere i den med lethed. Desuden kan IDE’er hjælpe dig med at teste din kode og redigere dem i overensstemmelse hermed.

Her er de bedste IDE’er, der fungerer godt med Golang.

Gogland

Softwareudviklingsfirmaet JetBrains har udgivet endnu et pålideligt IDE, men denne gang til Golang. Gogland er et kommercielt IDE, der giver et robust ergonomisk miljø til Go-udviklere. Det indeholder også kodningshjælp, debugger og en integreret terminal.

Da det er et etableret firma, der har skabt Gogland, har det et omfattende IntelliJ-plugin-økosystem, hvor du kan få yderligere værktøjer, hvis du har brug for mere.

Visual Studio Code

Skabt af Microsoft, er Visual Studio Code et fuldt udstyret IDE og en kodeeditor med åben kildekode, der understøtter en lang række programmeringssprog. Det har smart færdiggørelse med IntelliSense; debugging ved hjælp af break points, call stacks og en interaktiv konsol; indbygget Git-integration; og hierarkisk mappe- og filekspert.

Som et andet populært IDE har Visual Studio Code et støttende fællesskab af Go-udviklere, der regelmæssigt bidrager. Med Visual Studio Code kan du udvide funktionaliteterne med rækken af tilgængelige plugins.

LiteIDE

LiteIDE er blandt de første Golang-centrerede, open source-IDE’er, der blev oprettet for mere end 5 år siden. Som en C++ Qt-applikation med et unikt udseende tilbyder LiteIDE kodestyring, konfigurerbare byggekommandoer, gdb- og Delve-debugger, autokomplettering og tematisering med WordApi, MIME-type-baseret system og meget mere. Det giver også JSON- og Golang-understøttelse.

Wide

Wide er et webbaseret IDE for Golang-programmører. Det er designet til kollaborativ udvikling og fungerer bedst til teams og webudviklingsbureauer. Wide-funktioner omfatter kodehøjde, fejlfinding, Git-integration og meget mere.

Da Wide er oprettet og vedligeholdt af en kinesisk udvikler, er det meste af dokumentationen og supporten på kinesisk.

Atom med go-plus-plugin

Hvis du allerede bruger Atom, kan din koderedigeringsoplevelse i Golang forbedres med en open source-pakke kaldet go-plus. Med go-plus får du øjeblikkelig feedback i realtid på dine syntaks- og byggefejl.

Den go-plus-pakke tilbyder næsten al Golang-understøttelse i Atom. Den kan også bruges til værktøjer, build flows, linters, vet- og dækningsværktøjer.

Go-plus indeholder også forskellige kodestumper og funktioner såsom autokomplettering med gocode, kodeformatering med gofmt, goreturns eller goimports og meget mere.

Eclipse med GoClipse

Da Eclipse er et meget populært IDE, er der blevet oprettet adskillige plugins til det. GoClipse er et Eclipse-plugin til Golang, der tilbyder redigering af Go-kildekode med konfigurerbar syntaksfremhævning og automatisk indrykning og parentesudfyldning.

GoClipse fungerer også som en projektguide og builder, der rapporterer syntaks- og byggefejl med det samme. Yderligere funktioner i GoClipse omfatter debugging-funktionalitet og kodeassistance.

Sublime Text with GoSublime

Sublime Text er en anden sofistikeret teksteditor med et stort fællesskab af bidragydere og udviklere. Som sådan er der blevet skabt et bredt udvalg af plugins til denne IDE.

GoSublime er et Golang-plugin til Sublime Text 3, der tilbyder kodekomplettering fra Gocode, kontrol af lint/syntaks, mens du laver kode, automatisk tilføjelse og fjernelse af pakkeimport og meget mere.

Vim med vim-go plugin

Vim er et gratis, open source-IDE, der kan tilpasses og konfigureres med forskellige plugins. Hvis du er Golang-programmør, kan du bruge Vim med vim-go plugin’et, der er oprettet af Fatih Arslan. Vim-go installerer automatisk alle de nødvendige binære filer for at give en smidig Vim-integration til Golang.

Vim-go er en kraftfuld plugin-suite til at skrive og udvikle Go. Dens funktioner omfatter avanceret kildekodeanalyse, tilføjelse og fjernelse af importstier, understøttelse af flere 3rd liner, goto-definition, hurtige fileksekveringer og meget mere.

Vim-go kan i høj grad tilpasses, med individuelle funktioner, der kan aktiveres eller deaktiveres efter behov.

Komodo

Komodo er et fuldt udstyret IDE til Go-sproget, der understøtter andre programmeringssprog som Node.js, Python, Ruby, Perl og meget mere. Med dette Go IDE kan du nemt skrive ren kode. Dens funktioner omfatter en avanceret kodeeditor, intelligent kodekomplettering, syntakskontrol, versionsstyring og enhedstest samt en Go Code Intelligence, der giver mulighed for kodebrowsing og kodehints.

Det gode ved Komodo er, at det fungerer godt til teamsamarbejde, da flere udviklere kan redigere et dokument samtidig. Komodo kan installeres på Mac, Windows eller Linux med kun én licens.

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

IntelliJ IDEA (samme firma som JetBrains) er en IDE, der kan bruges med Golang via Go language support plugin

. Hvis du vil bruge IntelliJ IDEA med Golang, skal du installere dette plugin, om end med begrænsede funktioner i modsætning til Gogland.

Værktøjer til Golang

Golang-værktøjer kan bruges til en lang række forskellige projekter og webapplikationer. Udviklere kan skrive kode og bygge applikationer så hurtigt og nemt som muligt med disse nyttige værktøjer.

Her er en liste over de bedste Golang-værktøjer til din reference.

Apicompat

Apicompat er et nyt Go-sprogværktøj, der hjælper udviklere med at opdage bagudrettede, inkompatible ændringer og eksporterede deklarationer.

Med Apicompat kan du undgå falsk positive resultater. Det er dog ikke alle bagudkompatible ændringer, der er inkompatible, der kan detekteres af Apicompat. Udskiftning af argumentparametre og andre ændringer skal stadig overvejes af biblioteksforfatteren.

Checkstyle

Inspireret af Java Checkstyle udskriver Checkstyle for Golang forslag til kodningsstil. Det giver også udviklere mulighed for at kontrollere filens linje/funktion og linje/param-nummer, som derefter kan konfigureres af brugeren.

Depth

Depth er et andet nyttigt Golang-værktøj, der hjælper webudviklere med at hente og visualisere Go-kildekodeafhængighedstræer. Det kan bruges som et selvstændigt kommandolinjeprogram eller som en bestemt pakke i dit eget projekt. Du kan tilføje tilpasninger ved blot at indstille de relevante flag på træet før opløsning.

Go-Swagger

Dette værktøjssæt indeholder en bred vifte af funktioner og egenskaber. Go-Swagger er en implementering af Swagger 2.0, og kan serialisere og deserialisere swagger-specifikationer. Det er en minimalistisk, men kraftfuld repræsentation af din RESTful API.

Med Go-Swagger kan du swagger spec dokument, validere mod jsonschema og andre ekstra regler. Andre funktioner omfatter kodegenerering, API-generering baseret på swagger-specifikationer, generering af specifikationsdokument baseret på koden, udvidede strengformater og meget mere.

Go Meta Linter

Hvis du har brug for at køre Go lint-værktøjer og normalisere deres output samtidigt, er det præcis, hvad Go Meta Linter kan gøre for dig. Go Meta Linter er beregnet til at blive brugt sammen med en teksteditor eller en IDE-integration såsom Sublime Linter plugin, Atom go-plus-pakken, Emacs Flycheck-checker, Vim/Neovim og Go for Visual Studio Code. Den understøtter også en lang række lintere og konfigurationsfiler som JSON.

Go-callvis

Go-callvis er et webudviklingsværktøj, der giver dig mulighed for at visualisere opkaldsgrafen for dit Go-program med Graphviz’ dot-format. Dette værktøj er især nyttigt, når du opbygger store projekter med komplekse kodebaser. Det er også nyttigt, når du ønsker at forstå en anden udviklers kodestruktur eller genopbygge en andens projekt.

Med go-callvis kan udviklere fokusere specifikke pakker i et program; gruppere funktioner efter pakke og metoder efter type; og begrænse pakker til brugerdefinerede stipræfikser og ignorere dem, der indeholder dem.

Gonative

Gonative er et simpelt Golang-værktøj, der lader dig bygge Go-værktøjskæder med native libs, som kan krydskompileres, mens de stadig udnytter de Cgo-aktiverede versioner af stdlib-pakkerne.

Gonative downloader de binære distributioner for hver platform og kopierer deres biblioteker til de rette steder. Samtidig indstiller Gonative den korrekte mod-tid for at undgå unødvendige rebuilds.

Gonative er desværre endnu ikke testet på Windows. Derudover leveres der ingen Linux/arm-understøttelse.

Grapes

Grapes er et letvægts Golang-værktøj, der er designet til at distribuere kommandoer over ssh nemt. Det er skrevet og aktivt vedligeholdt af Yaron Sumel.

Grapes vil snart understøtte fuld validering af værtsnøgler, så det er noget, som udviklere bør holde øje med.

Gosimple

Det gode ved denne Golang-linter er, at den fokuserer på at forenkle Go-kildekode. Gosimple er altid rettet mod den nyeste Go-version, så den kræver Go-version 1.6 eller nyere.

Hvis der er en ny Go-udgave, vil gosimple foreslå de nemmeste og enkleste metoder for at undgå komplicerede konstruktioner.

Go Vendor

Go Vendor er Golang-værktøjet, der arbejder med standardmappen Vendor. Det giver udviklere mulighed for at kopiere eksisterende afhængigheder fra $GOPATH med govendor add/update. Du kan også direkte trække nye afhængigheder eller opdatere eksisterende afhængigheder med govendor fetch og flytte legacy-systemer med govendor migrate.

Wrapping It Up

Hvis du kommer fra en JS/Node-baggrund, skal du lære nogle nye programmeringsbegreber såsom coroutines, channels, strict typing med kompilering, interfaces, structs, pointers og nogle andre forskelle. Men når du først er kommet ind i rillen, vil du finde Golang nemmere og hurtigere at bruge.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret.