Vad är de bästa Golang IDE?

Go är ett fantastiskt programmeringsspråk. Det kommer också med en omfattande verktygskedja. Många utvecklare använder bara vanliga textredigerare med eller utan insticksprogram för att skriva Go-kod, men många andra föredrar att använda riktiga IDE (integrerade utvecklingsmiljöer). 

I denna handledning lär du dig information om det aktuella läget för Go IDEs och vara redo att välja ditt vapen.

Varför använd en IDE?

Jag var alltid en stor fan av IDEs. Tidigt i min karriär använde jag Microsofts Visual Studio för C / C ++ utveckling samt C #. Jag har använt NetBeans för en kort utveckling av Java-utveckling. Jag har använt JetBrains PyCharm för Python-utveckling, och nu använder jag JetBrains Gogland for Go-utveckling.

Jag arbetar vanligtvis på storskaliga programvarusystem som består av flera projekt med tusentals filer. Jag behöver mycket hjälp med stora kodbaser. Här är de främsta anledningarna till att jag gillar IDE så mycket:

Integrerad kod organisation och navigering

Med en bra IDE kan du organisera din kod hierarkiskt, visa och navigera den med lätthet och snabbt söka efter din kod. IDE kommer att göra mycket mer än bara textsökning och låter dig filtrera baserat på språkspecifika konstruktioner (t ex visa bara klasser eller gränssnitt med ett visst namn).

Integrerad testning

Integrerad testning är också avgörande. Jag spenderar merparten av min utvecklingstid på test, antingen skriva dem, försöka få dem att gå över eller undersöka varför test plötsligt misslyckades. Ett bra IDE med integrerad testning gör att du kan köra tester på ett selektivt sätt (alla bara ett projekt, misslyckades test från tidigare körning), kommer att markera fel och låter dig hoppa snabbt till rätt ställe i koden för att fixa några problem.

Integrerad felsökning 

Detta är förmodligen den viktigaste funktionen för mig. Jag älskar integrerade debuggers. Jag vill kunna lägga till en brytpunkt (inklusive villkorliga brytpunkter), se stapelspåret och visa variablerna vid varje ram. 

För bonuspoäng (tack PyCharm), gillar jag att ha en interaktiv konsollsession när en pauspunkt träffar. Alternativen för printf debugging (kräver modifiering av koden och ombyggnad) eller visning av loggfiler (ofta inte tillräckligt med granularitet eller mycket ljud) är mycket mer frustrerande och mindre produktiva. Även fristående debuggers som gdb kommer inte nära produktiviteten hos en bra integrerad debugger.

Hogland

Gogland är mitt nuvarande Golang IDE. Det är en mycket ung produkt, fortfarande i tidig tillgång förhandsgranskning, men jag anser det fortfarande vara den mest kompletta och integrerade Go IDE. Den är byggd på JetBrains starka grund, så den är extremt robust och funktionell.

Kodredigerare och assistans

Goglands kodredigerare är utmärkt. Här är några av dess möjligheter:

  • Tabbed-gränssnitt
  • Slutförande av smarta koden
  • Inspektioner och snabbkorrigeringar
  • refacto
  • Snabbnavigering
  • Snabba popup-fönster för dokumentation, definition, användningsområden, struktur etc..
  • Kodgenerering (t ex implementeringsgränssnitt)
  • Upptäck rekursiva samtal
  • Visar vilken typ av uttryck som helst
  • Markeringsfunktionens utgångspunkter
  • Parameternips 

debugger

Gogland debugger är utmärkt. Den är byggd ovanpå Delve, som används av andra IDE: er som vi täcker också. Den använder de vanliga JetBrains felsöknings konfigurationerna för att styra allt om en felsökningsfrekvens, som exekverade binära, miljövariablerna, arbetsmappen och kommandoradsargumenten. 

Du kan ställa in brytpunkter, villkorliga brytpunkter och klockor. När en brytpunkt träffas kan du observera stapelspåret och de lokala variablerna i varje ram. Tyvärr visas globala variabler inte och behövs ofta i Go.

Jag hade ett problem med debuggeren där brytpunkter träffas för tidigt! Tänk på följande Go-snippet:

x: = 1 y: = 3 z: = x + y fmt.Println (z)

Ibland, om jag lägger en brytpunkt på sista raden, skulle det slå, men värdet av z skulle vara 0, istället för 4. Hur kan det vara? Det visar sig att debuggeren blev förvirrad på något sätt. Om jag fortsätter att gå igenom koden kommer den att hoppa tillbaka till z: = x + y, Tilldela 4 till z, och gå sedan till sista raden och skriv 4 på rätt sätt till skärmen. 

Jag slösade bort några timmar och försökte felsöka ett komplicerat kodstycke, inte inse att jag inte alltid fick den rätta bilden. Så småningom tänkte jag ut vad som händer och ignorerade bara den falska tidiga utlösningen av brytpunkter.

Jag är inte säker på om det är ett Delve eller Gogland problem, men jag är säker på att de kommer att fixa det snart. Kom ihåg att det bara är en snabb förhandsgranskning.

Testlöpare

Testlöparen låter dig springa, stoppa och starta om test. Jag kunde använda den framgångsrikt för att köra och felsöka enhetstester, liksom integrationsprov med både Gos testpaket och en BDD-testram som ginkgo.

Go Tools

Go kommer med olika verktyg, och Gogland integrerar dem direkt i IDE. Du kan använda något verktyg från menyn "Kod | Go Tools". Den inbyggda kodformatet av Gogland använder standardverktyget "go fmt".

Versionskontroll

Gogland ärverver det mogna källkontrollsystemet för andra JetBrains produkter. Jag har främst använt git-supporten, som möjliggör hantering av flera projekt, utmärkt visning av grenar, flera ändringssätt och mer. Andra källkontrollsystem som Mercurial och SVN stöds också via ytterligare plugins.

Integrerad terminal  

Gogland ger en inbyggd terminal om du behöver köra vissa kommandon. Det är trevligt att stanna inom IDE och kunna titta på eller kopiera från / till redigeringsrutor utan att helt ändra windows.

Sträckbarhet

Gogland kommer med massor av inbyggda funktioner, men det är fullt utdragbart, och många av dess inbyggda funktioner är faktiskt förinstallerade plugins. Du kan installera många användbara plugins, och du kan utveckla dina egna plugins om du vill.

Visual Studio Code

Visual Studio Code är en utökad öppen källkod editor som utvecklats främst av Microsoft (med massor av bidrag från samhället). Den är baserad på Electron, som i sin tur är baserad på Chromium. Visual Studio Code stöder många språk och ursprungligen inriktad på webbutveckling. Den har starkt stöd för Go-utveckling, inklusive integration av alla Go-verktygen och Delve-debuggen via en dedikerad tillägg. Du måste installera några Go-paket och verktyg för att komma igång.

Visual Studio Code erbjuder även inbyggd git-integration, hierarkisk mapp / filutforskare och ett flikgränssnitt.

IntelliSense-supporten (autokomplettering, visar parametertyper och dokumentation) är bra och ger en mycket trevlig redigeringsupplevelse. Den integrerade debuggeren (använder även Delve under huven) är mycket bra gjort och matchar Goglands debugger.

Visual Studio Code är mycket lyhörd och snabb. Här är dess omfattande funktionslista:

  • Kompletteringslistor (med hjälp av gokoden)
  • Signaturhjälp (med hjälp av gogetdoc eller godf + godoc)
  • utdrag
  • Snabbinfo (med gogetdoc eller godf + godoc)
  • Gå till definition (med gogetdoc eller godf + godoc)
  • Hitta referenser (med hjälp av guru)
  • Referenser CodeLens
  • Filutkast (med hjälp av utkast)
  • Arbetsytsymbolsökning (med hjälp av go-symboler)
  • Byt namn på (med hjälp av gorename. Obs! För Ångra efter omnamn för att fungera i Windows måste du ha diff-verktyg i din väg)
  • Bygg-on-save (med hjälp av go build och go test)
  • Lint-on-save (med golint eller gometalinter)
  • Format (med hjälp av goreturns eller goimports eller gofmt)
  • Generera enhetstestskelett (med hjälp av testar)
  • Lägg till import (med gopkgs)
  • Lägg till / ta bort etiketter på strukturfält (med hjälp av gomodifytags)
  • Semantisk / syntaktisk felrapportering när du skriver (använder gotype-live)
  • Kör test under markören, i aktuell fil, i nuvarande paket, i hela arbetsytan (med go-test)

LiteIDE

LiteIDE är mycket ovanligt. Det var den första seriösa Go IDE, började tillbaka 2011/2012, och det går fortfarande starkt. Det är en C ++ Qt-applikation, och den har ett anpassat utseende. I likhet med Gogland och Visual Studio Code använder den Go-verktygen och Delve debugger för att tillhandahålla språktjänster (även om den startade med gdb debugger innan Delve var klar). 

Sammantaget är det ett komplett IDE, men det känns inte så polerat. Såvitt jag kan säga är det ganska mycket en enmans ansträngning, vilket är extraordinärt. Här är en sammanfattning av LiteIDE-funktionerna.

Kärnfunktioner

  • System miljöhantering
  • Konfigurerbara byggkommandon
  • Enkelt och öppet debug system (stöder både gdb och Delve)
  • Kate format för automatisk slutförande och teman
  • Konfigurerbar automatisk slutförande med WordApi
  • MIME-typbaserat system
  • Plugin support
  • Snabbt öppet

Golang Support

  • Paket webbläsare
  • Klassvy och skiss
  • Dokumentbläsare
  • Gocode support
  • GOPATH API-index
  • Kodnavigering
  • Hitta användningar
  • Kod Refactor
  • Gå på lekplatsen

Ytterligare stöd

  • Prissänkning
  • JSON
  • Golang Present

Bred

Wide är intressant eftersom det är en dedikerad Golang webbaserad IDE. Dess fokus ligger på samarbetsutveckling, och den är designad för lag. Utvecklaren är kinesisk och mycket av dokumentationen finns på kinesiska, så det kanske inte är lämpligt för alla. Det är definitivt inte i nivå med andra IDEs när det gäller funktioner och integration.

Gå till plugins för andra IDEs

Det finns många generella IDE-filer som stöder många programmeringsspråk och har lagt till stöd för Go-språket också. Jag är inte ett stort fan av sådana miljöer. Jag tror att en integrerad miljö måste ha djupt integrerade språkspecifika krokar. Det är svårt att implementera som en enkel plugin (även om du kanske hävdar att detta är exakt vad VS-kod gör). 

Några populära utvecklingsmiljöer som har lagt till Go-support är:

  • Förmörkelse
  • Atom
  • konsoler
  • Komodo
  • Cloud9

Textredigerare

Go är ett enkelt språk. Många människor känner sig väldigt produktiva bara med hjälp av en textredigerare, eventuellt med några ytterligare Go-plugins. Jag anser inte de riktigt integrerade utvecklingsmiljöerna. Men det är vettigt om du har många års erfarenhet av din textredigerare, du har redan anpassat det efter eget tycke, och du använder det för många andra uppgifter. Här är en lista över några av de mer populära textredigerarna och deras Go-plugins:

Emacs

Med följande plugins: 

  • go-mode
  • GoFlyMake Flymake-stil syntaxkontroll för Go
  • go-errcheck.el Errcheck integration för Emacs

Sublim Text 

Med GoSublime-plugin  

Vim och NeoVim 

Med en uppsjö av Go plugins.

  • vim-go
  • Syntastic
  • Tagbar
  • vim-kompilator-go
  • vim-godef
  • vim-go-extra

Slutsats

Go har kommit långt och har ett robust ekosystem som innehåller många alternativ för utvecklingsmiljön. Delve debugger ger en fantastisk interaktiv felsökningsupplevelse och används av de flesta topp IDE. Spela runt med dessa IDEs och hitta den som passar dig mest. 

Rätt IDE kan göra arbetet med Go ännu roligare.